Win32编程--(VC7下Dialog-based程序的构建)

王朝vc·作者佚名  2006-01-09
宽屏版  字体: |||超大  

生成Dialog-based程序

1.使用win32 Wizzard生成模版

2.生成Resource File(.rc)

Win32程序不支持VC7.0 Resource Editor编辑出来的对话框(Dialog)。

他的ResourceType为 DIALOGEX。修改的方法是将其改为 DIALOG,其他部分也作相应修改。最好变为vc6的格式。

相关文章见:

http://support.microsoft.com/default.aspx?scid=kb;en-us;138971

资源文件结构

见MSDN的

ms-help://MS.VSCC.2003/MS.MSDNQTR.2003FEB.2052/winui/winui/windowsuserinterface/resources/introductiontoresources/resourcefileformats.htm

ResourceID ResourceType Left,Top,Width,Height

STYLE

CAPTION

FONT

BEGIN

//list of Controls created in the dialog

END

3.将CreateWindow改为CreateDialog()创建非模态对话框

4.修改消息处理回调函数:

>>消息处理函数返回值为BOOL(可不变)

>>如果窗口过程处理某消息,返回TRUE;不处理某消息,返回FALSE;

>>CreateDialog()后,会发出WM_INITDIALOG,添加

>>增加窗体关闭选项:

1>

WM_COMMAND

...

case IDCANCEL:

{

EndDialog(hWnd,wmId);//仅关闭窗口

PostMessage(hWnd,WM_DESTROY,0,0);//退出程序

return TRUE;

}

>>非模态对话框的消息要经过程序的消息队列,这和模态对话框不同。要将这些消息传给对话框过程要更改消息循环。(可不变)

if(hDlgWnd==0||!IsDialogMessage(hDlgWnd,&msg)){

if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg))

{

TranslateMessage(&msg);

DispatchMessage(&msg);

}

}

2>去掉default的DefWindowProc这一项,使X按钮可用

//default:

// return DefWindowProc(hWnd, message, wParam, lParam);

5.所有dialog空件所发都是WM_COMMAND消息,LOWORD(wParam)得到ID号

6.几个函数:

建立模态对话框:DialogBox() vs 建立非模态对话框:CreateDialog()

结束对话框: EndDialog()

得到控件:GetDlgItem()

设置控件字符:SetWindowText()

得到控件字符:GetWindowText()

发送阻塞消息: SendMessage()

发送非阻塞消息: PostMessage()

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
© 2005- 王朝网络 版权所有