《Windows程式設計》對話方塊1

來源:互聯網
上載者:User

今天遇到一個問題:自己寫了書中代碼第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也必須要加上引號,否則不會調用。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.