首先填充DLGTEMPLATE结构体:
DLGTEMPLATE* CreateDlgData()
{
const int SIZE = 1024;
WORD* pTempl = new WORD[SIZE];
memset(pTempl, 0, sizeof(WORD)*SIZE);
DLGTEMPLATE& dt = *((DLGTEMPLATE*)pTempl);
dt.style = WS_OVERLAPPEDWINDOW |DS_MODALFRAME|WS_DLGFRAME;//dialog style
dt.dwExtendedStyle = WS_EX_DLGMODALFRAME;//dialog extention style
dt.cdit = 0;//控件数量,这里设为0
pTempl += sizeof(DLGTEMPLATE);
*pTempl++ = 0; /// menu
*pTempl++ = 0; /// class name
return &dt;
}
然后申明dialog窗口过程:
INT_PTR CALLBACK dialogProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
switch(uMsg)
{
case WM_INITDIALOG:
&n

本文提供了一个使用API动态创建非模式和模式对话框的简单示例。首先通过填充DLGTEMPLATE结构体定义对话框样式,然后声明对话框过程dialogProc处理消息。在WM_INITDIALOG消息中初始化对话框并添加控件。最后,使用CreateDialogIndirectParam或DialogBoxIndirectParam创建并显示对话框。
最低0.47元/天 解锁文章
2341

被折叠的 条评论
为什么被折叠?



