본문 바로가기

Programming/MFC

[MFC] ListCtrl 배경 이미지 등록하기

BOOL ClistCtrlImageDlg::OnInitDialog()
{
    CDialog::OnInitDialog();

    // 시스템 메뉴에 "정보..." 메뉴 항목을 추가합니다.

    // IDM_ABOUTBOX는 시스템 명령 범위에 있어야 합니다.
    ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
    ASSERT(IDM_ABOUTBOX < 0xF000);

    CMenu* pSysMenu = GetSystemMenu(FALSE);
    if (pSysMenu != NULL)
    {
        CString strAboutMenu;
        strAboutMenu.LoadString(IDS_ABOUTBOX);
        if (!strAboutMenu.IsEmpty())
        {
            pSysMenu->AppendMenu(MF_SEPARATOR);
            pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
        }
    }

    // 이 대화 상자의 아이콘을 설정합니다. 응용 프로그램의 주 창이 대화 상자가 아닐 경우에는
    // 프레임워크가 이 작업을 자동으로 수행합니다.
    SetIcon(m_hIcon, TRUE);   // 큰 아이콘을 설정합니다.
    SetIcon(m_hIcon, FALSE);  // 작은 아이콘을 설정합니다.

    // TODO: 여기에 추가 초기화 작업을 추가합니다.
    m_list.InsertColumn(0,"HEADER_1",LVCFMT_LEFT,180,1);
    m_list.InsertColumn(1,"HEADER_2",LVCFMT_LEFT,180,1);
    m_list.InsertColumn(2,"HEADER_3",LVCFMT_LEFT,193,1);
 
    ListView_SetExtendedListViewStyle(m_list.m_hWnd,
         LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES|
         LVS_EX_FLATSB|LVS_EX_HEADERDRAGDROP );

    // Insert Background Image into the ListControl

    LVBKIMAGE bki;

    if (m_list.GetBkImage(&bki) && (bki.ulFlags ==LVBKIF_SOURCE_NONE))
    {
        m_list.SetBkImage(TEXT("C:\\app400main_listctrl.bmp"),TRUE);
        // Use your own Image Address Here
    }


    return TRUE;  // 컨트롤에 대한 포커스를 설정하지 않을 경우 TRUE를 반환합니다.
}




BOOL ClistCtrlImageApp::InitInstance()
{
     // 응용 프로그램 매니페스트가 ComCtl32.dll 버전 6 이상을 사용하여 비주얼 스타일을
     // 사용하도록 지정하는 경우, Windows XP 상에서 반드시 InitCommonControls()가 필요합니다.
     // InitCommonControls()를 사용하지 않으면 창을 만들 수 없습니다.
     InitCommonControls();

     CWinApp::InitInstance();

     AfxEnableControlContainer();


    CoInitialize(NULL); // Initialize COM libraries


     // 표준 초기화
     // 이들 기능을 사용하지 않고 최종 실행 파일의 크기를 줄이려면
     // 아래에서 필요 없는 특정 초기화 루틴을 제거해야 합니다.
     // 해당 설정이 저장된 레지스트리 키를 변경하십시오.
     // TODO: 이 문자열을 회사 또는 조직의 이름과 같은
     // 적절한 내용으로 수정해야 합니다.
     SetRegistryKey(_T("로컬 응용 프로그램 마법사에서 생성한 응용 프로그램"));

     ClistCtrlImageDlg dlg;
     m_pMainWnd = &dlg;
     INT_PTR nResponse = dlg.DoModal();
     if (nResponse == IDOK)
     {
          // TODO: 여기에 대화 상자가 확인을 눌러 없어지는 경우 처리할
          // 코드를 배치합니다.
     }
     else if (nResponse == IDCANCEL)
     {
          // TODO: 여기에 대화 상자가 취소를 눌러 없어지는 경우 처리할
          // 코드를 배치합니다.
     }

     // 대화 상자가 닫혔으므로 응용 프로그램의 메시지 펌프를 시작하지 않고
     // 응용 프로그램을 끝낼 수 있도록 FALSE를 반환합니다.
     return FALSE;
}