在activex控制項中引入窗體技術
一、引入dialog技術
---- 下面介紹在製作activex控制項時引入有模式對話方塊技術,製作步驟如下:
建立一新的mfc activex controlwizard專案,取名為hello,其他用預設選項;
在resourceview頁中新增一對話方塊資源,命名為idd_hellodialog,可以在對話方塊上放自己的控制項;
為對話方塊資源idd_hellodialog建立新類chellodialog,從cdialog繼承;
確認在helloctrl.h中已加入語句#include "hellodialog.h",為chelloctrl類新增成員變數chellodialog m_hellodialog;
用classwizard在automation頁中為chelloctrl新增一方法void dohello(),外部名亦為dohello;
void chelloctrl::dohello()
---- 可以用activex control test container測試hello control的dohello方法。
---- 下面介紹在製作activex控制項時引入無模式對話方塊技術,製作步驟如下:
在上面工作的基礎上,用classwizard為chelloctrl新增wm_create的處理函式oncreate,在此建立無模式對話方塊;
修改dohello**,在此顯示對話方塊;
int chelloctrl::oncreate
(lpcreatestruct lpcreatestruct)
void chelloctrl::dohello()
---- 下面介紹製作以對話方塊作為介面的activex控制項技術,製作步驟如下:
在上面工作的基礎上,設定對話方塊資源idd_hellodialog屬性的style頁為style:child、border:dialog frame、title bar:unchecked;設定more style頁為visible:checked;control:checked;設定extended styles頁為static edge:checked;
在chelloctrl::oncreate中寫入m_hellodialog.create(idd_hellodialog,this)語句;
在chelloctrl::ondraw中寫入m_hellodialog.movewindow(rcbounds,true);
int chelloctrl::oncreate(lpcreatestruct lpcreatestruct)
void chelloctrl::ondraw(cdc* pdc, const
crect& rcbounds, const crect& rcinvalid)
---- 二、引入formview技術
---- 下面介紹在製作activex控制項時引入formview技術,製作步驟如下:
在上面工作的基礎上,在resourceview頁中新增一對話方塊資源,命名為idd_helloformview,可以在對話方塊上放自己的控制項;
設定對話方塊資源idd_hellodialog屬性的style頁為style:child、border:dialog frame、title bar:unchecked;設定more style頁為visible:checked;control:checked;設定extended styles頁為static edge:checked;
為對話方塊資源idd_helloformview建立新類chelloformview,從cformview繼承;
在helloformview.h中將chelloformview的建構函式chelloformview()和析構函式virtual ~chelloformview()從protected改為public;
在helloformview.h中對chelloformview類加入public friend class chelloctrl;
確認在helloctrl.h中已加入語句#include "helloformview.h",為chelloctrl類新增成員變數chelloformview m_helloformview;
修改chelloctrl::oncreate函式,在此建立m_helloformview;
修改dohello**,在此顯示formview;
int chelloctrl::oncreate
(lpcreatestruct lpcreatestruct)
void chelloctrl::ondraw(cdc* pdc, const
crect& rcbounds, const crect& rcinvalid)
---- 三、引入document/view結構技術
---- 下面介紹在製作activex控制項時引入document/view技術,製作步驟如下:
在上面工作的基礎上,在hello工程中用classwizard新增一新類cprintframe,取其父類為cframewnd;
在printframe.h中將cprintframe的建構函式cprintframe()和析構函式virtual ~cprintframe()從protected改為public;
在hello工程中用classwizard新增一新類cprintview,取其父類為cview;
在printview.h中將cprintview的建構函式cprintview()和析構函式virtual ~cprintview()從protected改為public;
在hello工程中用classwizard新增一新類cprintdoc,取其父類為cdocument;
在printdoc.h中將cprintdoc的建構函式cprintdoc()和析構函式virtual ~cprintdoc()從protected改為public;
在hello工程中用classwizard新增一新類cprintthread,取其父類為cwinthread;
在helloctrl.h檔案中為chelloctrl類新增成員變數cprintthread* m_pprintthread,確認在helloctrl.h中已加入語句#include "printthread.h";
void chelloctrl::dohello()
在printthread.h中新增新成員變數
cprintdoc* m_pprintdoc和cprintframe* m_pprintframe,
並在建構函式和析構函式中完成對它們的初始設定和清除,
確認在printthread.h中已加入語句#include
"printdoc.h"和#include "printframe.h";
cprintthread::cprintthread()
cprintthread::~cprintthread()
在printthread.cpp的cprintthread::initinstance中,進行建立窗體cprintframe,確認在printthread.cpp中已加入語句#include "printframe.h";
bool cprintthread::initinstance()
在printview.h的cprintview中,新增成員函式cprintdoc* getdocument(),確認在printview.h中已加入語句#include "printdoc.h";
cprintdoc* cprintview::getdocument()
---- 四、實現activex列印預覽技術
---- 下面介紹利用上面的技術成果來實現activex的列印預覽技術,實現步驟如下:
在上面工作的基礎上,用classwizard對cprintview類實現onprepareprinting函式,如下:
bool cprintview::onprepareprinting(cprintinfo* pinfo)
用classwizard在automation頁中為chelloctrl新增一方法void dopreview(),外部名亦為dopreview;
void chelloctrl::dopreview()
在printview.h中新增#define wm_user_preview wm_user+10
在printview.cpp中的訊息對映中新增on_message(wm_user_preview, dopreview),形成如下:
begin_message_map(cprintview, cview)
on_message(wm_user_preview, dopreview)
//}afx_msg_map
end_message_map()
為類cprintview新增成員函式lresult dopreview(wparam wparam, lparam lparam)
實現cprintview::dopreview如下:
lresult cprintview::dopreview
(wparam wparam, lparam lparam)
為cprintview新增public成員變數colecontrol* m_pcontrolpreview,並初始化如下:
cprintview::cprintview()
在cprintview::ondraw中對控制項內容進行顯示
void cprintview::ondraw(cdc* pdc)
}用classwizard在automation頁中為chelloctrl新增一方法void setpreviewcontrol(),外部名亦為setpreviewcontrol,對其實現如下:
void chelloctrl::setpreviewcontrol()
---- 在activex control test container測試,啟用方法次序為dohello、setpreviewcontrol、dopreview。
在ActiveX控制項中引入窗體技術
一 引入dialog技術 下面介紹在製作activex控制項時引入有模式對話方塊技術,製作步驟如下 建立一新的mfc activex controlwizard專案,取名為hello,其他用預設選項 在resourceview頁中新增一對話方塊資源,命名為idd hellodialog,可以在對話方...
在Chrome上使用ActiveX控制項
一名id叫做eagleonhill的chrome迷論壇會員這幾天就寫出了乙個chrome擴充套件,通過將activex包裝成了chrome firefox支援的npapi外掛程式,從而實現在chrome firefox平台的activex控制項支援,目前已經基本實現了windows平台chrome的...
在Chrome上使用ActiveX控制項
ie 上使用 ocx 外掛程式網上已經有很多資料說明,這裡就不重複了,那如何在 chrome 瀏覽器上使用 ocx 外掛程式呢?1 編寫 ocx 外掛程式,增加測試 html 頁面。普通呼叫 本著讓世界變得更美好的高尚信念,我幫他們設計了一套解決方案,並幫他們開發了出來,執行多時,還算穩定。下面,就...