Windows環境下32位組譯工具設計C版code–第五章(一)

來源:互聯網
上載者:User

(一)菜單和加速鍵

 

#include<windows.h><br />#include"Resource.h"</p><p>TCHARszBuffer[128];<br />TCHARszClassName[] = TEXT("Menu Example");<br />TCHARszCaptionMain[] = TEXT("Menu");<br />TCHAR szCaption[] = TEXT("菜單選擇");<br />TCHARszMenuHelp[] = TEXT("說明主題(&H)");<br />TCHARszMenuAbout[] = TEXT("關於本程式(&A)...");<br />TCHARszFormat[] = TEXT("您選擇了功能表命令: %08x");<br />HWNDhMainWnd;<br />HMENUhMenu;<br />HMENUhSubMenu;<br />HACCELhAccelerator;</p><p>VOID DisplayMenuItem(DWORD dwCommandID)<br />{<br />wsprintf(szBuffer, szFormat, dwCommandID);<br />MessageBox(hMainWnd, szBuffer, szCaption, MB_OK);<br />}</p><p>VOID Quit()<br />{<br />DestroyWindow(hMainWnd);<br />PostQuitMessage(0);<br />}</p><p>LRESULT CALLBACK ProcWinMain(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)<br />{<br />POINTstPt;<br />HMENUhSysMenu;</p><p>switch(uMsg)<br />{<br />case WM_CREATE:<br />hSubMenu = GetSubMenu(hMenu, 1);<br />hSysMenu = GetSystemMenu(hWnd, FALSE);<br />AppendMenu(hSysMenu, MF_SEPARATOR, 0, NULL);<br />AppendMenu(hSysMenu, 0, IDM_HELP, szMenuHelp);<br />AppendMenu(hSysMenu, 0, IDM_ABOUT, szMenuAbout);<br />return 0;</p><p>case WM_COMMAND:<br />DisplayMenuItem(wParam);<br />switch(LOWORD(wParam))<br />{<br />case IDM_EXIT:<br />Quit();<br />return 0;<br /> case IDM_TOOLBAR:<br />case IDM_TOOLBARTEXT:<br />case IDM_INPUTBAR:<br />case IDM_STATUSBAR:<br />if(MF_CHECKED == GetMenuState(hMenu, (UINT)wParam, MF_BYCOMMAND))<br />{<br />CheckMenuItem(hMenu, (UINT)wParam, MF_UNCHECKED);<br />}<br />else<br />{<br />CheckMenuItem(hMenu, (UINT)wParam, MF_CHECKED);<br />}<br />return 0;<br />case IDM_BIG:<br />case IDM_SMALL:<br />case IDM_LIST:<br />case IDM_DETAIL:<br />CheckMenuRadioItem(hMenu, IDM_BIG, IDM_DETAIL, LOWORD(wParam), MF_BYCOMMAND);<br />return 0;<br />}<br />break;<br />caseWM_SYSCOMMAND:<br />switch(LOWORD(wParam))<br />{<br />caseIDM_HELP:<br />caseIDM_ABOUT:<br />DisplayMenuItem(wParam);<br />return 0;<br />default:<br />return DefWindowProc(hWnd, uMsg, wParam, lParam);<br />}<br />break;<br />case WM_RBUTTONDOWN:<br />GetCursorPos(&stPt);<br />TrackPopupMenu(hSubMenu, TPM_LEFTALIGN, stPt.x, stPt.y, 0, hMainWnd, NULL);<br />return 0;<br />case WM_CLOSE:<br />Quit();<br />return 0;<br />}<br />return DefWindowProc(hWnd, uMsg, wParam, lParam);<br />}</p><p>int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow)<br />{<br />WNDCLASSEXstWndCls;<br />MSGstMsg;</p><p>RtlZeroMemory(&stWndCls, sizeof(stWndCls));<br />stWndCls.hCursor = LoadCursor(NULL, IDC_ARROW);<br />stWndCls.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_MAIN));<br />stWndCls.hIconSm = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_MAIN));<br />stWndCls.cbWndExtra = 0;<br />stWndCls.cbClsExtra = 0;<br />stWndCls.hInstance = hInstance;<br />stWndCls.cbSize = sizeof(WNDCLASSEX);<br />stWndCls.style = CS_HREDRAW | CS_VREDRAW;<br />stWndCls.lpfnWndProc = ProcWinMain;<br />stWndCls.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);<br />stWndCls.lpszClassName = szClassName;<br />stWndCls.lpszMenuName = NULL;</p><p>RegisterClassEx(&stWndCls);</p><p>hMenu = LoadMenu(hInstance, MAKEINTRESOURCE(IDM_MAIN));<br />hAccelerator = LoadAccelerators(hInstance, MAKEINTRESOURCE(IDA_ACCELERATOR));<br />hMainWnd = CreateWindowEx(WS_EX_CLIENTEDGE, szClassName, szCaptionMain,<br />WS_OVERLAPPEDWINDOW, 100, 100, 600, 400, NULL, hMenu, hInstance, NULL);</p><p>ShowWindow(hMainWnd, SW_SHOWNORMAL);<br />UpdateWindow(hMainWnd);</p><p>while(GetMessage(&stMsg, NULL, 0, 0))<br />{<br />if(0 == TranslateAccelerator(hMainWnd, hAccelerator, &stMsg))<br />{<br />TranslateMessage(&stMsg);<br />DispatchMessage(&stMsg);<br />}<br />}<br />return stMsg.wParam;<br />}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.