맞춰보십시다.
void MyChangeDisplaySettings()
{
    DISPLAY_DEVICE dd;
    DEVMODE dm;
    
    int nDev = 2;
    DWORD dwWidth[2] = {640, 640};        //첫번째 모니터는 1024*768로 만들고
    DWORD dwHeight[2] = {480, 480};       //두번째 모니터는 800*600으로 만든다면....
    
    for(int i=0; i < nDev; i++) {
        
        //EnumDisplayDevices 함수를 이용하여 디스플레이 디바이스를 찾아야 합니다.
        memset(&dd, 0, sizeof(DISPLAY_DEVICE));
        dd.cb = sizeof(DISPLAY_DEVICE);   
        EnumDisplayDevices(NULL, i, &dd, 0);    //i번째 모니터의 이름을 받아올 수 있습니다.
        
        memset(&dm, 0, sizeof(DEVMODE));
        dm.dmSize = sizeof(DEVMODE);
        dm.dmFields = DM_PELSWIDTH | DM_PELSHEIGHT;
        dm.dmPelsWidth = dwWidth[i];
        dm.dmPelsHeight = dwHeight[i];
        
        if (ChangeDisplaySettingsEx((char*)dd.DeviceName, &dm, NULL, CDS_TEST, NULL) == DISP_CHANGE_SUCCESSFUL)
            ChangeDisplaySettingsEx((char*)dd.DeviceName, &dm, NULL, CDS_FULLSCREEN, NULL);
    }
}
Explorer.exe 가 오류가 발생하여 다시 시작됐을때, 트레이아이콘이 사라지게 된다.

이 문제를 해결하기 위해서는 다시 시작됐을때 메세지를 받아서 처리하면 된다.

h 파일에 함수를 하나 추가한다.

// 메세지 처리 함수
void OnTrayShow(WPARAM wParam, LPARAM lParam);

cpp 파일에 아래의 내용을 추가한다.

// 전역변수 추가
UINT g_uShellRestart = RegisterWindowMessage(__TEXT("TaskbarCreated"));

// 메세지 맵 추가
ON_REGISTERED_MESSAGE(g_uShellRestart, OnTrayShow)

// 메세지 처리
void CTrayTestDlg::OnTrayShow(WPARAM wParam, LPARAM lParam)
{
    Shell_NotifyIcon(NIM_ADD, &m_nid/*NOTIFYICONDATA*/);
    SendMessage(WM_SETICON, (WPARAM)TRUE, (LPARAM)m_nid.hIcon);
}

리스트콘트롤의 헤더에서 멀티라인 지원하는 클래스.

http://www.codeproject.com 에 있는 자료를 필요에 의해 짜집기 및 수정해서 만들었다.

사용법은 간단하다.
// 헤더파일 추가
#include "ListCtrlEx.h" 

CListCtrl 멤버변수를 CListCtrlEx로 바꿔주고...

// 헤더 추가
LV_COLUMN lvcolumn;
lvcolumn.mask = LVCF_FMT|LVCF_SUBITEM|LVCF_TEXT|LVCF_WIDTH;
lvcolumn.fmt = LVCFMT_CENTER;
lvcolumn.cx = 0;
lvcolumn.pszText = " ";
m_ctrlList.InsertColumn(nIdx++, &lvcolumn);

lvcolumn.fmt = LVCFMT_RIGHT;
lvcolumn.cx = 100;
lvcolumn.pszText = "공사비용\n(만원)";
m_ctrlList.InsertColumn(nIdx++, &lvcolumn);
lvcolumn.fmt = LVCFMT_RIGHT;
lvcolumn.cx = 80;
lvcolumn.pszText = "공정률\n(%)";
m_ctrlList.InsertColumn(nIdx++, &lvcolumn);

// 모든 헤더가 추가된 후 마지막에 한줄 추가
m_ctrlList.Initializing(320, "견명조");
위와 같이 하면 헤더에 멀티라인 적용되며, 데이터는 한줄 번갈아가며 배경색이 적용된다.


ListCtrlEx.zip