본문 바로가기

Windows19

CWnd::Invalidate 함수 & static 에 글씨가 겹쳐서 보일 때 Static에 글씨가 겹쳐서 보일 때 조치법 CStatic 을 상속받은 재정의 클래스를 선언하고, OnPaint 함수에서 배경을 투명화하고 DrawText 하도록 해주었다. 그랬더니 Invalidate 함수를 호출할때마다 글자가 한겹씩 점점 더 진해지는게 아닌가! 이런 경우는 아래 URL 을 참고하여 해결하는 방법이 있다. 필자는 우선 이런 방식으로 해결은 하였다만, 또 다른 방법도 있어 소개하려고 한다. 1. 글씨를 출력하는 SetWindowsText 호출 전에 Invalidate(FALSE)를 호출하는 방법 https://itbrain.tistory.com/entry/MFCStatic-Control-%EB%B0%B0%EA%B2%BD-%ED%88%AC%EB%AA%85%ED%99%94-%EB%B0%8F-.. 2021. 8. 20.
[TIFF란?] TIFF 이미지 형식과 Libtiff 라이브러리 TIFF 가 뭔가요? 호환성이 뛰어나 매킨토시와 IBM PC에서 공통으로 사용할 수 있는 최초의 파일 포맷. RGB 및 CMYK 이미지를 24비트까지 지원하며 이미지 손상이 없는 LZW(Lempelziv welch)라는 압축 방식을 채택하고 있다. LZW 압축은 이미지의 질을 손상시키지 않는 '무손실 압축'으로 가장 좋은 압축률을 보인다. 포토숍 이미지를 이 포맷으로 저장을 하게 되면, 매킨토시에서 사용할 것인지 또는 IBM PC 호환 기종에서 읽어 들일 것인지를 선택해야 한다. [네이버 지식백과] TIFF [tagged image file format] LibTiff 이 TIFF 관련해서 http://www.libtiff.org/ 홈페이지에서 TIFF 파일을 생성하거나 TIFF 확장자 정보를 얻거나 하.. 2020. 8. 11.
[다이얼로그 배경색 지우기] OnEraseBkgnd 와 OnCtlColor 다이얼로그의 배경 색을 바꾸는 예제는 아래와 같다 BOOL MainWnd::OnEraseBkgnd(CDC* pDC) { CRect r; GetClientRect(r); // 배경색을 파란색으로 변경한다. 흰색은 RGB(255,255,255) pDC->FillSolidRect(r, RGB(0,0,255)); return TRUE; } 문제는 OnCtlColor 에서도 마지막 매개변수인 nCtlColor 값을 CTLCOLOR_DLG 로 설정하면 다이얼로그 배경색을 바꿀 수 있는데, OnEraseBkgnd 함수를 호출하는 메시지 WM_ERASEBKGND 의 정의 : 창 배경을 지워야 함을 나타냅니다. OnCtlColor 함수를 호출하는 메시지 WM_CTLCOLOR 의 정의 : 컨트롤이 그려지려고 함을 나타냅니.. 2020. 8. 8.
(2) MFC 초기화 함수 : InitInstance, OnInitDialog CMFCApplication1App::InitInstance 함수 InitInstance 함수는 이 프로세스의 초기화 함수 입니다. CMFCApplication1App이 상속받고 있는 CWinApp의 InitInstance 함수를 호출합니다. 이 프로세스의 초기화 루틴에서 해야할 동작들은 CWinApp의 InitInstance 함수에 이 프로세스의 초기화 루틴들이 이미 있어요. 내가 만드는 프로그램은 이 함수를 호출해주기만 하면 됩니다. 그리고나서 InitInstance 함수 밑에보시면 CMFCApplication1Dlg 의 인스턴스를 생성해서 아직까지 뭔지는 몰라도 DoModal이라는 함수를 호출해주고 있죠. 이 프로세스에서 윈도우를 생성해주는 부분이라고 생각하시면 됩니다. CMFCApplication.. 2020. 8. 8.
(1) MFC 시작하기 MFC 가 뭔지는 모르겠지만 윈도우에서 UI가 있는 프로그램을 만들기 위해 이 글을 읽고 계실거라 생각합니다. MFC 란 무엇인지? 에 대해서는 구글링하면 정의가 아주 많이 나와있어요. 이 글을 보고 있는 분들은 MFC가 무엇인지 보다는, MFC 라이브러리를 이용해서 프로그램을 어떻게 만드는지, Visual Studio로 MFC 프로젝트 생성은 했는데 도대체 여기 있는 소스들이 뭘 의미하는지, 어디서부터 뭘 해야할지 모르겠어서 찾아보는 분들일 거라 추측합니다. (제가 그랬거든요) 각설하고, 짧고 굵게 본론만 설명합니다. 더보기 참고로 Visual Studio 안깔려 있으시면 이 글을 참조하시면 됩니다. C++ 개발자를 위한 Visual Studio 설치하는 방법 2020/08/08 - [Dev Notes.. 2020. 8. 8.
[리스트 컨트롤] CListCtrl 예제 Dialog 기반의 Window 프로그램을 만들 때, 리스트 컨트롤을 자주 사용하게 됩니다. 이때 이 리스트에 새로운 item을 추가하는 예제입니다. 현재 리스트의 갯수를 받아와서 nCnt 에 넣고, 새로운 item은 nCnt+1번째에 추가 (nCnt 에 추가하는 것 같지만, 이 인덱스는 0부터 시작하는 배열이기 때문에 item.iItem = nCnt로 지정) 하는 예제입니다. int nCnt = m_ListProcessPolicy.GetItemCount(); _stprintf_s( szCnt, _T("%d"), nCnt ); LVITEM item = {0,}; item.iItem = nCnt; item.iSubItem = 0; item.pszText = szCnt; item.mask = LVIF_TEX.. 2020. 8. 8.