dhtmldlg 介面製作
dlg為dialog
與普通對話方塊的區別
1.類的繼承關係
class csingledlg : public cdhtmldialog
2.資源列舉
enum ;
3.建構函式
csingledlg::csingledlg(cwnd* pparent /*=null*/)
: cdhtmldialog(idd_dlg_single, idr_html_single, pparent)
4.rc資源
idr_html_testhtmldialog_dialog html "testhtmldialog.htm"
5-6做dlg與html互動用
5.event 動作
declare_dhtml_event_map()
//此間定義函式用於html發訊息給,dlg,而dlg處理後不需返回
6.declare_dispatch_map
//此間定義函式,用於html發訊息給,dlg,而dlg處理後再發訊息給html.
對於對話方塊的處理:
1.去掉border 設定border 值為none
2.視窗移動:(因為視窗移動與combo-box訊息衝突的問題,搞到晚上11點,主要是沒找到問題根源)
兩種方式新增訊息函式
第一種:以**的方式
1)在begin_message_map(csingledlg, cdhtmldialog)中新增
on_wm_mouseactivate()
2)在標頭檔案中新增
afx_msg int onmouseactivate(cwnd* pdesktopwnd, uint nhittest, uint message);
3) 在cpp檔案中實現
int csingledlg::onmouseactivate(cwnd* pdesktopwnd, uint nhittest, uint message)
第二種:利用mfc方式(新增類嚮導)
1)右擊dlg,選擇新增類嚮導
2)點訊息,搜尋mouseactivate
3)確定,然後在.cpp中實現。
//與標準mfc無任何差別。。。。
3.dlg禁用訊息
.h檔案
// 遮蔽掉網頁彈出的activex安全警告對話方塊。
virtual bool i***ternaldispatchsafe()
virtual bool canacces***ternal();
// 遮蔽右擊選單
virtual hresult stdmethodcalltype showcontextmenu(dword dwid, point *ppt, iunknown *pcmdtreserved, idispatch *pdispreserved);
// 攔截一些系統快捷鍵
stdmethod(translateaccelerator)(lpmsg lpmsg, const guid *pguidcmdgroup, dword ncmdid);
.cpp檔案(實現 )
// cdh***lg 訊息處理程式
bool csingledlg::canacces***ternal()
hresult stdmethodcalltype csingledlg::showcontextmenu(dword dwid, point *ppt, iunknown *pcmdtreserved, idispatch *pdispreserved)
hresult stdmethodcalltype csingledlg::translateaccelerator(lpmsg lpmsg, const guid *pguidcmdgroup, dword ncmdid)
// prevent ctrl+f
if (lpmsg->wparam == 'f' && bctrl)
// prevent f5
if (lpmsg->wparam == vk_f5)
// prevent esc
if (lpmsg->wparam == vk_escape)
// prevent enter
if (lpmsg->wparam == vk_return)
}return cdhtmldialog::translateaccelerator(lpmsg, pguidcmdgroup, ncmdid);
}4.禁用ctrl+滑鼠滾動(dlg上的網頁介面大小變化)
.h 中
virtual bool pretranslatemessage(msg* pmsg);
.cpp中
bool csingledlg::pretranslatemessage(msg* pmsg)
return cdhtmldialog::pretranslatemessage(pmsg);
}對話方塊與html訊息互動:
1.begin_dispatch_map(csingledlg, cdhtmldialog)
disp_function(csingledlg, "starts", onbuttonrun, vt_empty, vts_none)
end_dispatch_map()
//這裡以啟動按鍵為例
void csingledlg::onbuttonrun()
;variant vtret;
onbnclickedbtnrun2();
if (m_drun*** == 1)
}hresult cbctools::calljsfunction(ihtmldocument2* pdoc2,
cstring strfunctionname,
dispparams dispparams,
variant* varresult,
excepinfo* exceptinfo,
uint* nargerr)
dispid dispid;
ccombstr objbstrvalue = strfunctionname;
bstr bstrvalue = objbstrvalue.copy();
olechar *pszfunct = bstrvalue;
hresult = pdispscript->getidsofnames(iid_null,
&pszfunct,
1,locale_system_default,
&dispid);
if (failed(hresult))
varresult->vt = vt_variant;
hresult = pdispscript->invoke(dispid,
iid_null, locale_user_default,
dispatch_method,
&dispparams,
varresult,
exceptinfo,
nargerr);
pdispscript->release();
return hresult;
}對話方塊上各控制項的文書處理,背景處理 此方面的事情與普通dialog一致,這裡不再說明。
UI 介面製作體會
最近,公司在為乙個新產品設計介面,我本人參與了此項工作,因而在這方面有些體會,籍此機會想把這些想法寫下來,做乙個階段的工作總結。在國內,能真正擁有乙個ui設計師的軟體公司真的少之又少,可以說是鳳毛麟角,一般公司都是只有美工,更確切地說,是在國內根本很難找到乙個專業的ui設計師。據調查,並不是國內人士...
歡迎介面的製作
1 在歡迎介面 welcome單元 中新增時鐘控制項timer1,設定恰當的interval值,並在其ontimer事件中新增如下 procedure tfrmwelcome.timer1timer sender tobject begin frmwelcome.close timer1.enabl...
C 製作歡迎介面
1 設定窗體的屬性 startposition centerscreen formboderstyle none 2 新增背景 在屬性面板的backgroundimage中新增背景 3 為窗體新增timer元件,以實現窗體的淡入淡出效果。4 編寫 using system using system....