一般而言,在 windows程式設計中建立對話方塊需要先定義乙個對話方塊資源。我想能不能不用資源檔案單純通過**建立對話方塊呢?晚上搜尋了一些資料,研究了一下,基本實現了。
我寫了乙個kdialog,**如下(**中有一些注釋,相信大家能基本看懂):
標頭檔案的**:
[cpp]view plain
copy
"font-size:16px;"
>
// kdialog.h
#ifndef kdialog_h_included
#define kdialog_h_included
#define id_help 150
#define id_edit 180
#define id_text 200
class
kdialog
; #endif // kdialog_h_included
cpp檔案的**:
[cpp]view plain
copy
"font-size:16px;"
>#include
"kdialog.h"
#include "resource.h"
bool
callback dialogproc (
hwnd
, uint
, wparam
, lparam
) ;
lpword
lpwalign (
lpword
lpin)
kdialog::kdialog(hinstance
hinst,
hwnd
hwndowner)
kdialog::~kdialog()
char
nedittwo[128]=
"從這兒輸入字串."
; bool
callback kdialog::dialogproc(
hwnd
hdlg,
uint
umsg,
wparam
wparam,
lparam
lparam)
break
; case
wm_close:
enddialog (hdlg, 0) ;
return
true ;
default
: break
; }
return
false ;
} int_ptr
kdialog::domodal()
外部呼叫的方法也很簡單(把應用程式控制代碼和對話方塊的所有者視窗控制代碼傳進來即可):
[cpp]view plain
copy
"font-size:16px;"
> kdialog dlg(m_hinst,m_hwnd);
dlg.domodal();
上面建立的是模式對話方塊,下面是建立非模式對話方塊的**:
[cpp]view plain
copy
bool
kdialog::domodeless()
效果圖如下:
具體的實現原理,大家請參考這篇文章:對話方塊模板,regextest,微軟官網上也有相關的文章:usingdialog boxes。此外codeproject上的乙個例子:usingdialog templates to create an inputbox() in c++
MFC不使用對話方塊資源模版建立對話方塊
在mfc程式中使用對話方塊時首先在資源模版裡建立對話方塊資源,然後domodal 或者create顯示出模式對話方塊或者非模式對話方塊,這樣建立出的對話方塊移植性差,從乙個工程移動到另乙個工程比較麻煩。如下 建立記憶體對話方塊資源模版類,h檔案 pragma once define dlg temp...
Android 自定義對話方塊 res資源檔案
android 自定義對話方塊 res資源檔案 this表示該對話方塊是針對當前activity的 progress progressdialog new progressdialog dialogactivity.this 設定最大值為100 progressdialog.setax 100 設定...
在記憶體建立對話方塊資源
pragma once class cbasedyndialog public cdialog public dword m dwdlgexstyle,m dwdlgstyle 風格 wchar m szdlgtitle 128 標題 rect m rcdlgrect 位置 尺寸 wchar m s...