Visual C++(MFC)18 MFC12. Thread Thread는 하나의 프로그램에서 그 프로그램과 상관없이 실행되는 루틴을 작성할 때 사용합니다. 예를 들어 통신 프로그램의 경우 계속해서 통신 포트를 체크하여 수신되는 데이터를 화면상에 표시하여야 하는데 만약 Thread를 사용하지 않으면 통신 데이터를 기다리는 동안 어떠한 작업도 수행할 수 없는 프로그램이 되는데 이 경우 통신 루틴을 Thread를 이용하여 실행하도록 구성합니다. Thread Class 작성 Thread는 우선 CWinThread로부터 상속 받아 Thread Class를 작성해야 합니다. 먼저 Thread라는 이름으로 프로젝트를 생성합니다. 프로젝트 Tree에서 마우스 우측 버튼을 클릭하여 생성된 팝업 메뉴에서 Add의 부메뉴 Class를 선택하면 다음과 같은 대화 상자가 생성됩니다. .. 2022. 3. 7. MFC11. DLL 제작 Dll은 Dynamic Link Library의 약자로 완성된 여러개의 CPP파일을 하나로 묶어서 라이브러리로 만들어 사용을 쉽게 하는데 사용합니다. 물론 라이브러리 파일은 확장자 lib파일로 만들어도 되나 DLL로 만들면 여러 가지 장점이 있습니다. 필자의 경우 모든내용을 DLL로 만들지는 않고(DLL파일을 만드는데도 노력이 들어가고 또한 DLL내부에 버그가 있는 경우 따로 컴파일을 해야하므로 관리에도 신경써야합니다) 대화 상자를 여러 프로그램에서 사용하는 경우 많이 사용합니다. 하나의 프로그램에서 대화 상자를 만들어서 사용하고 같은 대화 상자이어도 다른 프로그램에서 사용하기 위해서는 거의 새로 작성하는 것과 같은 노력이 들어 갑니다. 이 문제를 해결하는 방법으로 DLL을 만들어 사용하면 여러 프로그램.. 2022. 3. 7. MFC10. 메모리 MFC를 이용하여 프로그램하기 전에는 대부분 배열 및 포인터를 이용하여 메모리를 사용하였습니다. 그리고 배열 및 포인터를 이용하여 메모리를 사용하여도 프로그램하는 데는 전혀 문제가 없습니다. 그러나 메모리 사용에 있어 더 유연한 Class를 MFC에서 제공하므로 그 내용을 여기에서 소개하고자 합니다. 여기에서 소개하고자 하는 Class는 CArray, CList, CMap입니다. 거의 사용법은 비슷하나(조금씩 다름), 구조적으로 완전히 다른 기능을 수행합니다. CArray CByteArray CDWordArray CObArray //많이 사용 CPtrArray CStringArray //많이 사용 CUintArray CWordArray CList CPtrList CObList //많이 사용 CString.. 2022. 3. 7. MFC09. 인쇄하기 인쇄 기능은 MFC에서 제공하는 인쇄기능을 이용할 경우 몇가지 세팅만하면 간단히 인쇄가 됩니다. GUI 설명에서 잠깐 언급했듯이 BITMAP에 출력 및 프린터 출력등 출력에 해당하는 I/F는 모두 CDC Class에 의해 통합 관리가 됩니다. MFC 내부적으로 인쇄일 경우 인쇄 CDC를 얻어 OnDraw의 인자로 넘겨 줌으로써 거의 수정없이 인쇄가 가능한 것입니다. Source 설명 일반적으로 프로젝트를 생성하여 프로그램을 제작하면 인쇄기능이 그대로 지원됩니다. 그러나 화면해상도와 프린터의 해상도는 차이가 나므로 인쇄물은 좌측 상단에 조그마하게 인쇄됩니다. 따라서 프린터기의 해상도에 맞추어 인쇄를 수행해야만 합니다. 이것은 메핑모드를 바꾸어서 수행할 수 있습니다. 메핑모드에 대해서는 여기서 자세히 설명하.. 2022. 3. 7. MFC08. View에서 깜박임 문제 해결 VisualC++(MFC 프로그램)에서 View를 생성하고 OnDraw함수에서 그림을 그리는 구조의 프로그램을 작성할 경우 일반적인 방법을 사용하면 윈도우 크기 변경등을 할 때 화면이 깜박이고 속도 또한 느려 보기에 좋지 않고, 또한 일정 주기로 화면을 갱신해야 하는 경우라면 그 갱신 주기 마다 전체 화면이 깜박인다는 것을 알 수 있습니다. 이런 문제를 격어 본 사람만 이 내용을 보기 바랍니다. 그렇지 않은 사람이 보았을 경우 혼란만 가중될 수 있습니다. 참고로 책에서 이런 내용은 찾을 수 없어 구현한 내용입니다. VisualC++이 업그레이드 되면 이 문제는 View생성 옵션으로 처리가 가능하도록 해결되리라 생각되나 불행히도 현재는 그런 옵션이 없는 것으로 알고 있습니다. 이 문제를 해결하려면... 1.. 2022. 3. 7. MFC07. Doc-View 구조 프로젝트 위자드를 사용하여 프로젝트를 생성하면(기본 프로그램 작성에서 설명) 다음과 같이 각 기능을 가진 파일들이 생성됩니다(프로젝트 이름을 Test로 만들었을 경우를 예로하여 설명). App : MainFrame을 생성하는 역할을 수행합니다(CTestApp). MainFrame : 타이틀바, 메뉴, 툴바, 상태바 등 프로그램의 바깥 부분을 관리하는 역할을 수행합니다(CMainFrame). ChildFrame : MDI 프로그램일 경우 만 있습니다. MDI 창의 타이틀등 바깥 부분을 관리하는 역할을 수행합니다(CChildFrame). View : 클라이언트 영역(프로그래머 또는 사용자가 그릴 수 있는 영역)을 관리하는 기능을 수행합니다. 실제 화면에 표시하는 루틴을 이 파일에 추가합니다(CTestView.. 2022. 3. 7. 이전 1 2 3 다음