본문 바로가기

컴퓨터/MFC_API32

CListCtrl의 Report 형식에서 각 Cell 의 배경과 글자색을 변경하기 CListCtrl 을 report 형식으로 하면 grid 처럼 사용할 수 있다. 이 때, 각 Cell 의 배경색과 글자색을 변경할 수 있으면 좀 더 알아 보기 좋게 표현할 수 있다. 아래 설명할 코드의 실제 결과는 다음과 같다. 기본적으로 CUSTOMDRAW 메세지 핸들러를 작성해 주면 되는데, MSDN 에 그 설명이 약간은 모호하게 나와 있는데, 자세히 풀어 보자면 다음과 같다. 환경 : Visual Studio 2010 on Windows 7 Professional SP1, English, 64-bit. ITEM 이나 subitem 이 그려질 때는 CUSTOMDRAW 구조체의 값 중 dwDrawStage 값이 CDDS_ITEMPREPAINT, 또는 CDDS_SUBITEM | CDDS_ITEMPREPA.. 2016. 1. 4.
작업표시줄에 아이콘 생기지 않게 하기 내가 만든 프로그램의 아이콘이 작업 표시줄(task bar)에 표시되지 않도록 해보자. HWND hWnd = AfxGetMainWnd()->GetSafeHwnd(); long style = GetWindowLong(hWnd, GWL_EXSTYLE); style &= ~(WS_VISIBLE); style |= WS_EX_TOOLWINDOW; style &= ~(WS_EX_APPWINDOW); ::ShowWindow(hWnd, SW_HIDE); SetWindowLong(hWnd, GWL_EXSTYLE, style); ::ShowWindow(hWnd, SW_SHOW); 위와 같이 하면 된다. 구글에서 "C++ hide window from taskbar" 로 검색하면 나오는 첫 결과인 이 페이지를 따랐는데, .. 2015. 4. 21.
CRichEditCtrl 에서 유니코드 표시 지금 RTF 파일에 글자(한문)를 저장해 놓은 후 읽어들여서 CRichEditCtrl instance 에 표시를 해주고 있는데, 이게 종종 글자가 깨진 것이 보인다. 이 경우, RTF 파일을 읽을 때 그 부분의 format 까지 같이 읽어서 저장해 놓은 후 표시할 때 그 format 을 사용하는 방법으로 우회하고 있다. 보다 정확한 방법은 사실 이론상으로 하기 힘든 듯 한데 확실하진 않다. RTF 파일은 글자 개별적으로 code-page 를 지정할 수 있게끔 되어 있다. 따라서 한 RTF 파일이라 하더라도 각 글자마다 서로 다른 code-page를 사용할 수 있다. CRichEditCtrl-derived view 를 이용해서 무조건 글자를 출력해버리면 code-page 가 맞지 않아서 글자가 깨져 나올 .. 2014. 5. 2.
CRichEditCtrl 에서 줄바꿈 없애기 CRichEditCtrl 의 instance 에서 word-wrap (줄바꿈)을 없애려면 SetTargetDevice 함수를 사용해야 한다. CRichEditCtrl::SetTargetDevice(NULL, 0); 과 같이 하면 줄바꿈이 없어진다. SetWordWrapMode 나 GetWordWrapMode 함수가 있어서 매번 사용할 때마다 혼동하는데 이 함수가 아니라 위의 함수를 사용해야 한다. MSDN의 설명에 따르면 두 번째 인자가 0 인 경우 line-break 가 없어진다고 나와 있다. 하지만 첫 번째 인자를 NULL 로 하는 것이 어떤 의미인지는 설명이 안 나와 있다. 아마도 현재 설정되어 있는 것을 변경시키지 않는다는 의미일 듯 한데 정확하진 않고 어쨌든 저렇게 호출하면 줄바꿈을 없앨 수 있.. 2014. 4. 11.