以前一直用的书上的代码,今天试了下WinMain里直接DialogBox也行。省去了那些retister class什么的,代码如下:#include <windows.h>
#include "resource.h"LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM) ;int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow) {
DialogBox( hInstance, ( LPCTSTR ) IDD_DIALOG1, NULL, ( DLGPROC ) WndProc ); return 0;
}
LRESULT CALLBACK WndProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) {
switch(uMsg){
case WM_INITDIALOG:
{
}
break;
case WM_COMMAND:
switch(LOWORD( wParam )) {
case IDOK:
{
EndDialog( hDlg, 0 );
}
break;
};
break;
case WM_CLOSE:
EndDialog( hDlg, 0 );
break;
};
return 0;
}比起先register class,CreateWindow,然后GetMessage,TranslateMessage,DispatchMessage , 直接把所有工作交给DialogBox不是更方便?请问这样做有什么缺点?
#include "resource.h"LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM) ;int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow) {
DialogBox( hInstance, ( LPCTSTR ) IDD_DIALOG1, NULL, ( DLGPROC ) WndProc ); return 0;
}
LRESULT CALLBACK WndProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) {
switch(uMsg){
case WM_INITDIALOG:
{
}
break;
case WM_COMMAND:
switch(LOWORD( wParam )) {
case IDOK:
{
EndDialog( hDlg, 0 );
}
break;
};
break;
case WM_CLOSE:
EndDialog( hDlg, 0 );
break;
};
return 0;
}比起先register class,CreateWindow,然后GetMessage,TranslateMessage,DispatchMessage , 直接把所有工作交给DialogBox不是更方便?请问这样做有什么缺点?
解决方案 »
- 为什么不显示内容, sprintf好像有问题,帮帮忙!
- explorer右键菜单菜单项插入的顺序问题
- 两个紧急的MFC问题!!!!(请进来指教下)
- 请问,vc中什么叫句柄,能不能举例说明一下?
- 要《人月神话》的各路好友再这里留个电子邮件!!!!!!20号后不再受理!!
- VC生成的PE格式可执行文件最小能到几K?有人说2K以下?
- 各位高手帮帮我,非常着急....
- 请教大虾们后缀为.ocx .lic .dll .flt .tlb .gdb .cfg 的文件怎么打开?
- 如何 找一些编程题练一练?
- 上传了一些源码,有兴趣的朋友可以看看
- [求助]如何编写具有可视化组件编辑功能的程序
- 求救 ,组件间通讯。
DialogBox( hInstance, ( LPCTSTR ) IDD_DIALOG1, NULL, ( DLGPROC ) WndProc ); return 0;
}
=================================================================================================
Windows uses its own internal window procedure to process messages to a dialog box window. Windows then passes these messages to a dialog box procedure within the program that creates the dialog box. so application cannot catch such as WM_KEYUP,WM_KEYDOWN messages in its own DialogProc.
( try to catch them)