DHTMLDLG 介面製作

2021-08-11 06:35:37 字數 3584 閱讀 8094

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....