《Windows程序设计》对话框1

来源:互联网 发布:java游戏高级编程 pdf 编辑:程序博客网 时间:2024/06/04 20:02

今天遇到一个问题:自己写了书中代码第11章对话框ABOUT1的程序,但是就是不能显示菜单项。

先上部分代码

int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,PSTR szCmdLine,int iCmdShow){//这地方szAppName不只是类名,程序中还用做图标ID,菜单文本IDstatic TCHAR szAppName[]=TEXT("About1");MSG msg;HWND hwnd;WNDCLASS wndclass;wndclass.style=CS_HREDRAW|CS_VREDRAW;wndclass.lpfnWndProc=WndProc;wndclass.cbClsExtra=0;wndclass.cbWndExtra=0;wndclass.hInstance=hInstance;//调用图标,用到的szAppNamewndclass.hIcon=LoadIcon(hInstance,szAppName);wndclass.hCursor=LoadCursor(NULL,IDC_ARROW);wndclass.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);//设置为类名wndclass.lpszClassName=szAppName;//调用菜单wndclass.lpszMenuName=szAppName;if(!RegisterClass(&wndclass)){MessageBox(NULL,TEXT("This program requires Windows NT!"),szAppName,MB_ICONERROR);return 0;}hwnd=CreateWindow(szAppName,TEXT("About Box Demo Program"),WS_OVERLAPPEDWINDOW,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,NULL,NULL,hInstance,NULL);ShowWindow(hwnd,iCmdShow);UpdateWindow(hwnd);while(GetMessage(&msg,NULL,0,0)){TranslateMessage(&msg);DispatchMessage(&msg);}return msg.wParam;}

书中的szAppName因为有多个用处与图标ID、菜单ID有密切的关系。因此图标的ID必须设置为与szAppName一样的(包括大小写和引号都要有)。

菜单ID,如果一开始你没有加引号,直接由About改为"About"是会提示错误的,可能是系统认为你提交这两个是一样的,但是在调用时,这两个就不一样了。

因此可以先改为一个其它的,再改为"About",这个地方如果不加引号,是不会出现菜单的,同样,图标的ID也必须要加上引号,否则不会调用。


原创粉丝点击