// 스타일 변경
m_ctrlList.SetExtendedStyle(LVS_EX_CHECKBOXES | LVS_EX_GRIDLINES | LVS_EX_FULLROWSELECT);

// 체크박스 영역 클릭 여부
if ( pNMItemActivate->ptAction.x >= 5 &&pNMItemActivate->ptAction.x <= 20 )
{
    ....
}

// 체크박스 체크 여부
UINT uState = m_ctrlListFiles.GetItemState(i-1, LVIS_STATEIMAGEMASK);
if(BOOL((int)(uState)-1)>>12)
{
    // 체크가 되어 있을 경우
    ....
}
else
{
    // 체크가 안되어 있을 경우
    ....
}

// 아이템 선택된 상태로 변경
m_ctrlList.SetItemState(nIndex/*아이템 Index*/, LVIS_SELECTED, LVIS_SELECTED);
HTML 컨트롤을 선택하여 기본적으로 제공되는 소스를 수정한 DHTML컨트롤.

기존의 IDHTCtrlUI을 삭제(이때, 컴파일 에러는 전부 주석처리)하고 외부로 노출될 UIObj Object를 추가했다.(ATL Object Wizard)

IDHTCtrl 인터페이스 생성부분에서 아래와 같이 수정 및 멤버변수를 추가했다.

// 웹 브라우저 생성, 인터페이스 교환
LRESULT OnCreate(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/)
{
        CAxWindow wnd(m_hWnd);

        // 1. Web Browser 컨트롤 생성
        HRESULT        hr        =        wnd.CreateControl(IDH_DHTCTRL);
        if(SUCCEEDED(hr)) {
                hr        =        CComObject<CUIObj>::CreateInstance(&m_pUI);
                if(SUCCEEDED(hr)) {

                        // 2. Web Browser에게 연동되는 UIDisp 전달
                        CComQIPtr<IDispatch> pDisp(m_pUI);
                        hr        =        wnd.SetExternalDispatch(pDisp);
                }
                if(SUCCEEDED(hr)) {

                        // 3. Web Browser가 노출하고 있는 Interface 포인터 획득
                        hr        =        wnd.QueryControl(IID_IWebBrowser2, (void**)&m_spBrowser);

                        // 4. Web Browser와 실제 연동할 m_pUI인터페이스에게 Web Interface 전달
                        m_pUI->put_Web(m_spBrowser);
                }
        }
        return SUCCEEDED(hr)?0:-1;
}

CComObject<CUIObj>                *m_pUI;

//////////////////////////////////////////////////////////////////////////////

IUIObj 인터페이스에 Web property를 추가.

STDMETHODIMP CUIObj::get_Web(IUnknown **pVal)
{
        m_spBrowser->Navigate(m_urlPath,NULL,NULL,NULL,NULL);
        return S_OK;
}

STDMETHODIMP CUIObj::put_Web(IUnknown *newVal)
{
        m_spBrowser        =        (IWebBrowser2*)newVal;
        return S_OK;
}

GoToURL()이란 메소드도 추가하여 메소드 안에서 m_spBrowser->Navigate(m_urlPath,NULL,NULL,NULL,NULL)을 호출.

멤버변수
CComPtr<IWebBrowser2>        m_spBrowser;        //IDHCtrl 에서 전달되는 인터페이스 저장
CComBSTR                m_urlPath;                //URL 저장공간

OnClick()메소드도 옮겨오기....소스복사, IDL수정....뭐 대충 이정도밖에 기억안나네ㅡ.,ㅡ

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

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