CHTMLViewのメモ
CHTMLViewクラスは他のCViewクラスとは違います。
これは、COMを利用したブラウザ関連(IE関連)の機能をクラス化している為です。
具体的には
- MFCによる印刷、印刷プレビューの非サポート
- MFCによるコピーなどのクリップボード系の非サポート
これらの機能は、COMを利用して実装する必要があります。
機能の実装の前に
COMを利用して、IEの機能を呼び出すことで、サポートされていない機能を実装できます。
そのための準備として以下のヘッダファイルをインクルードする必要があります。
- atlbase.h
- mshtmcid.h
- mshtmhst.h
印刷
印刷は以下のコードで実現できます。
CComQIPtr<IOleCommandTarget, &IID_IOleCommandTarget> pTarget;
pTarget = GetHtmlDocument();
pTarget->Exec(&CGID_MSHTML, IDM_PRINT, OLECMDEXECOPT_PROMPTUSER, NULL, NULL);
印刷プレビュー
印刷プレビューは以下のコードで実現できます。
CComQIPtr<IOleCommandTarget, &IID_IOleCommandTarget> pTarget;
pTarget = GetHtmlDocument();
pTarget->Exec(&CGID_MSHTML, IDM_PRINTPREVIEW, OLECMDEXECOPT_PROMPTUSER, NULL, NULL);
コピー
コピーは以下のコードで実現できます。
CComQIPtr<IOleCommandTarget, &IID_IOleCommandTarget> pTarget;
pTarget = GetHtmlDocument();
pTarget->Exec(&CGID_MSHTML, IDM_COPY, OLECMDEXECOPT_PROMPTUSER, NULL, NULL);
全て選択
全て選択は以下のコードで実現できます。
CComQIPtr<IOleCommandTarget, &IID_IOleCommandTarget> pTarget;
pTarget = GetHtmlDocument();
pTarget->Exec(&CGID_MSHTML, IDM_SELECTALL, OLECMDEXECOPT_PROMPTUSER, NULL, NULL);
検索
検索は以下のコードで実現できます。
CComQIPtr<IOleCommandTarget, &IID_IOleCommandTarget> pTarget;
pTarget = GetHtmlDocument();
pTarget->Exec(&CGID_MSHTML, IDM_FIND, OLECMDEXECOPT_PROMPTUSER, NULL, NULL);
参考文献
http://mfc.acty-net.ne.jp/ml/mfc/logTop/logAll/00017085.shtml
http://search.acty-net.ne.jp/mfc_search/archive/2001-1/msg03075.html
http://www1.0038.net/~laplace/Tools/translation/menu.htm
http://www.microsoft.com/japan/msdn/web/ie/ie55/beyondprintpreview.asp