순수하게 win32 만으로 할려니까... 어렵네요...
간단하게 atl 로 dialog 에 web browser 띄우는 것을 해 보겠습니다.
차례대로 따라 하세요.
1. AtlCom Object Wizard 로 들어갑니다. (이름을 마음대로 만드세요)
2. type 은 DLL, (실행, 서비스)EXE 가 있는데... 실행 EXE 하세요.
3. 프로젝트가 생성 되었고, Menu/insert/New ATL Object 를 선택하시면
3번째 분류에 Dialog 라는 것이 있습니다.
short name 만 지정하시고 만듭니다.
4. 다이얼로그가 생성되는데 여기다가 오른쪽 클릭후 Insert ActiveX 에서
Microsoft 웹 브라우저를 선택해서 추가합니다. 적당하게 Dlg 를 눌려주세요
5. 다이얼로그의 OnInitDialog()를 다음과 같이고치세요.
LRESULT OnInitDialog(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
{
HRESULT hr;
CComPtr
m_IEHost = GetDlgItem(IDC_EXPLORER1);
hr = m_IEHost.QueryControl(IID_IWebBrowser2,(PVOID *)&spIE);
hr = spIE->put_Visible(VARIANT_TRUE);
hr = spIE->GoHome();
return 1; // Let the system set the focus
}
6. CAxWindow m_IEHost; 를 .h 에 추가하세요.
7. _tWinMain 부분을 다음과 같이 고치세요.
if (bRun)
{
_Module.StartMonitor();
#if _WIN32_WINNT >= 0x0400 & defined(_ATL_FREE_THREADED)
hRes = _Module.RegisterClassObjects(CLSCTX_LOCAL_SERVER,
REGCLS_MULTIPLEUSE | REGCLS_SUSPENDED);
_ASSERTE(SUCCEEDED(hRes));
hRes = CoResumeClassObjects();
#else
hRes = _Module.RegisterClassObjects(CLSCTX_LOCAL_SERVER,
REGCLS_MULTIPLEUSE);
#endif
_ASSERTE(SUCCEEDED(hRes));
C????Dlg dlg;
dlg.DoModal();
/* MSG msg;
while (GetMessage(&msg, 0, 0, 0))
DispatchMessage(&msg);*/
_Module.RevokeClassObjects();
Sleep(dwPause); //wait for any threads to finish
}
8. 컴파일 하면 dlg 가 뜨고, 초기 홈페이지를 Load 합니다.
더 자세한 것은 또 문의 하세요... (될수 있으면 E-Mail 은 피해 주세요)
'ATL / WTL' 카테고리의 다른 글
BHO 함수란?? (0) | 2008.12.20 |
---|---|
[개발 히스토리] ATL 로 BHO 를 만들면서... (0) | 2008.12.20 |
ATL COM을 이용한 ICommand만들기(3) (0) | 2008.12.20 |
ATL COM을 이용한 ICommand만들기(2) (0) | 2008.12.20 |
ATL COM을 이용한 ICommand만들기(1) (0) | 2008.12.20 |