如果程式主視窗不是由cframewnd派生而來,而是由cwnd派生而來,那麼在建立視窗的時候,必須註冊自己的wndclass,因為cwnd::createex不接受null wndclass名稱。
這種情況下,註冊wndclass樣式半建立視窗有兩種方式。
方式一,定義乙個wndclass結構例項,並對每個字段進行初始化,然後呼叫::registerclass或者mfc的全域性函式afxregisterclass註冊wndclass。
如:
wndclass wc;
wc.style=0;
wc.lpfnwndproc=(wndproc)wndproc;
wc.cbcl***tra=0;
wc.cbwndextra=0;
wc.hinstance=hinstance;
wc.hicon=loadicon(null,idi_winlogo);
wc.hcursor=loadcursor(null,idc_arrow);
wc.hbrbackground=(hbrush)(color_window+1);
wc.lpszmenuname=null;
wc.lpszclassname="mywndclass";
registerclass(&wc);
這種方式比較麻煩。
方式二:用mfc的全域性函式afxregisterwndclass註冊wndclass,不需要定義所有字段,只需要關注其4個引數值。函式原型:lpctstr afxregisterwndclass(uint nclassstyle,hcursor hcursor=0,hbrush hbrbackground=0,hicon hicon=0);
第乙個引數指定類樣式,定義視窗的某種操作特性;第二個引數指定視窗識別「類游標」;第三個引數指定視窗預設背景顏色,可以傳遞乙個畫刷控制代碼,也可以指定乙個預定義的windows系統顏色並加1,第四個引數指定windows用來在桌面上、工作列和其它地方代表應用程式的圖示控制代碼,可以自定義圖示然後載入,也可以載入系統圖示。
該函式返回乙個包含wndclass名稱的非空結尾字串的指標,作用createex函式的引數,用以建立視窗。
如:createex(0,strwndclass,_t("my program"),
cw_usedefault,cw_usedefault,cw_usedefault,cw_usedefault,
null,null);
注:決定視窗能否縮放的部份,是建立視窗是為視窗指定樣式的引數部份。
其中ws_thickframe樣式增加了乙個其邊和角可以用滑鼠抓取並拖動的可調整大小的邊框,如果不定義這個樣式,則所生成的視窗不能縮放,此時,一般情況下是把最大化按鈕也撤消,即不定義ws_maximize樣式。
MFC中註冊WNDCLASS樣式並建立視窗
2010年4月10日記 如果程式主視窗不是由cframewnd派生而來,而是由cwnd派生而來,那麼在建立視窗的時候,必須註冊自己的wndclass,因為cwnd createex不接受null wndclass名稱。這種情況下,註冊wndclass樣式半建立視窗有兩種方式。方式一,定義乙個wndc...
MFC中基本控制項的WNDCLASS
control type wndclass mfc class buttons button cbutton list boxes listbox clistbox edit controls edit cedit combo boxes combobox ccombobox scroll bars...
程式中註冊dll
貼出一段很不錯的 用c 來實現對於某些dll或ocx檔案的註冊。就好比使用regsvr32一樣,不過我們不可能在部署程式到客戶機的時候還讓使用者使用這個工具吧,呵呵,所以覺得這個 很實用拉注釋很清楚,不用多說啥了。activex控制項的路徑及檔名 lpctstr pszdllname ieevent...