遍匈 / Windows園殻 / 10、暇汽式凪麿彿坿 /

屈、Windows暇汽!暇汽才嶧連

輝聞喘宀僉夲匯倖暇汽?扮?Windows宥械?完笥嶧連侃尖殻會窟僕叱倖音揖議嶧連。壓寄謹方秤趨和? 艇議殻會辛參策待寄何蛍嶧連?峪俶委万断勧弓公DefWindowProc軸辛。WM_INITMENU祥頁宸匯窃議嶧連?万醤嗤和双歌方?

wParam? 麼暇汽鞘凹

lParam? 0

wParam峙頁艇議麼暇汽鞘凹?軸聞聞喘宀僉夲議頁狼由暇汽嶄議?朕。Windows殻會宥械策待WM_INITMENU嶧連。勝砿壓僉嶄乎?岻念議嶧連厮将公殻會戻工阻俐個暇汽議字氏?徽頁厘断状誼緩震個延競蚊暇汽頁氏氾岱聞喘宀議。

殻會匆氏俊辺欺WM_MENUSELECT嶧連。昧彭聞喘宀壓暇汽?嶄卞強高炎賜宀報炎?殻會氏辺欺俯謹WM_MENUSELECT嶧連。宸斤糞恬椎乂淫根斤暇汽?議猟忖宙峰議彜蓑双頁載嗤逸廁議。WM_MENUSELECT議歌方泌和侭幣?

LOWORD (wParam)?瓜僉嶄?朕?暇汽ID賜宀起竃塀暇汽鞘凹

HIWORD (wParam)?僉夲縄炎

lParam: 淫根瓜僉嶄?朕議暇汽鞘凹

WM_MENUSELECT頁匯倖暇汽弖忸嶧連?wParam議峙御盆艇朕念僉夲議頁暇汽嶄議陳匯??紗互疏業?塋承陳埜?¡?wParam議互忖怏嶄議仝僉夲縄炎々辛參頁和双宸乂縄炎議怏栽?MF_GRAYED、MF_DISABLED、MF_CHECKED、MF_BITMAP、MF_POPUP、MF_HELP、MF_SYSMENU才MF_MOUSESELECT。泌惚艇俶勣功象斤暇汽?議僉夲栖個延完笥?塋焦瘕魑陳敞檻d巴環翛敏塋荒?WM_MENUSELECT嶧連。俯謹殻會委乎嶧連窟僕公DefWindowProc。

輝Windows彈姥?塋紹燦檝噉?讐傍ナ隠k賓瑫或斛虜??躋茂魴∨窯燦?WM_INITMENUPOPUP嶧連?歌方泌和?

wParam? 起竃塀暇汽鞘凹

LOWORD (lParam)?起竃塀暇汽沫哈

HIWORD (lParam)? 狼由暇汽葎1?凪万葎0

泌惚艇俶勣壓?塋承噉?讐傍ブ僐案惋短鰌濬虵嘆傍ハ遑d巴鑑盡氐虜⊂雄榜慴Ą?鐳脾viii拔┳茂鯤荒探噉?讐傍ド狼? Paste凋綜貫儒薮仮鹸崙猟忖?輝艇辺欺起竃塀暇汽嶄議WM_INITMENUPOPUP嶧連扮?哘鳩協儒薮仮坪頁倦嗤猟忖贋壓。泌惚短嗤?椎担哘乎聞 Paste暇汽?涙丼晒。厘断繍壓云嫗朔中俐個議POPPAD殻會嶄心欺宸劔議箭徨。

恷嶷勣議暇汽嶧連頁WM_COMMAND?万燕幣聞喘宀厮将貫暇汽嶄僉嶄阻匯倖瓜尼喘議暇汽?。及伊嫗嶄議WM_COMMAND嶧連匆辛參喇徨完笥陣周恢伏。泌惚艇当派葎暇汽才徨完笥陣周聞喘揖匯ID鷹?椎担艇辛參宥狛lParam議峙栖曝艶万断?暇汽?議lParam凪峙葎0?萩歌需燕10-1。

燕10-1

暇汽

陣周

LOWORD (wParam):

暇汽ID

陣周ID

HIWORD (wParam):

0

宥岑鷹

lParam:

0

徨完笥鞘凹

WM_SYSCOMMAND嶧連窃貌噐WM_COMMAND嶧連?峪頁WM_SYSCOMMAND燕幣聞喘宀貫狼由暇汽嶄僉夲匯倖尼喘議暇汽??

wParam: 暇汽ID

lParam: 0

隼遇?泌惚WM_SYSCOMMAND嶧連頁喇梓報炎梓囚恢伏議?LOWORD?lParam?才HIWORD?lParam?繍淫根報炎高炎了崔議x才y徳鳥恫炎。

斤噐WM_SYSCOMMAND?暇汽ID峺幣狼由暇汽嶄議陳匯?瓜僉嶄。斤噐圓枠協吶議狼由暇汽??熟詰議椎膨倖了哘乎才0xFFF0序佩AND塰麻栖徳盈渠?潤惚峙哘乎葎和双岻匯?SC_SIZE、SC_MOVE、SC_MINIMIZE、SC_MAXIMIZE、SC_NEXTWINDOW、SC_PREVWINDOW、SC_CLOSE、SC_VSCROLL、SC_HSCROLL、SC_ARRANGE、SC_RESTORE才SC_TASKLIST。緩翌?wParam辛參頁SC_MOUSEMENU賜SC_KEYMENU。

泌惚艇壓狼由暇汽嶄耶紗暇汽??椎担wParam議詰忖怏繍頁艇協吶議暇汽ID。葎阻閲窒嚥圓枠協吶議暇汽ID屢喝融?哘喘殻會哘乎聞喘弌噐0xF000議峙?宸斤噐繍匯違議WM_SYSCOMMAND嶧連窟僕公DefWindowProc頁載嶷勣議。泌惚艇音宸劔恂?椎担艇糞縞貧祥頁鋤喘阻屎械議狼由暇汽凋綜。

厘断繍網胎議恷朔匯倖嶧連頁WM_MENUCHAR。糞縞貧?万功云音頁暇汽嶧連。壓和双曾嶽秤趨岻匯窟伏扮?Windows氏委宸倖嶧連窟僕欺完笥嶧連侃尖殻會?泌惚聞喘宀梓和Alt才匯倖嚥暇汽?音謄塘議忖憲扮?賜宀壓?塋承噉?讐傍ザ畯荒稚澎艦岱燦?覽噉?讐傍ダ鏥掴酊寝仔ヅ箋鍔峽蕺軀院K?WM_MENUCHAR嶧連匯軟窟僕議歌方泌和侭幣?

LOWORD (wParam): 忖憲旗鷹?ASCII賜Unicode?

HIWORD (wParam): 僉夲鷹

lParam: 暇汽鞘凹

僉夲鷹頁?

  • 0 音?塋承噉?讐傍?
  • MF_POPUP ?塋承噉?讐傍?
  • MF_SYSMENU ?塋章詰概噉?讐傍?

Windows殻會宥械委乎嶧連勧弓公DefWindowProc?万匯違公Windows勧指0?宸氏聞Windows窟竃炬蕗。壓 及噴膨嫗GRAFMENU殻會嶄氏心欺WM_MENUCHAR嶧連議聞喘。

袈箭殻會

斑厘断栖心匯倖酒汽議箭徨。殻會10-4侭幣議MENUDEMO殻會?壓麼暇汽嶄嗤励倖僉夲??File、Edit、Background、Timer才Help?耽匯?脅嚥匯倖起竃塀暇汽屢銭。MENUDEMO峪頼撹阻恷酒汽、恷宥喘議暇汽侃尖荷恬?淫凄盛舜WM_COMMAND嶧連才殊臥wParam議詰忖怏。

殻會10-4 MENUDEMO
 
MENUDEMO.C
 
/*---------------------------------------------------------------------
 
 MENUDEMO.C -- Menu Demonstration
 
 (c) Charles Petzold, 1998
 
-----------------------------------------------------------------------*/
 
#include <windows.h>
 
#include "resource.h"
 
#define ID_TIMER 1
 
LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM) ;
 
TCHAR szAppName[] = TEXT ("MenuDemo") ;
 
int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
 
 PSTR szCmdLine, int iCmdShow)
 
{
 
 HWND hwnd ;
 
 MSG msg ;
 
 WNDCLASS wndclass ;
 
 
 
 wndclass.style = CS_HREDRAW | CS_VREDRAW ;
 
 wndclass.lpfnWndProc = WndProc ;
 
 wndclass.cbClsExtra = 0 ;
 
 wndclass.cbWndExtra = 0 ;
 
 wndclass.hInstance = hInstance ;
 
 wndclass.hIcon = LoadIcon (NULL, IDI_APPLICATION) ;
 
 wndclass.hCursor = LoadCursor (NULL, IDC_ARROW) ;
 
 wndclass.hbrBackground = (HBRUSH) GetStockObject (WHITE_BRUSH) ;
 
 wndclass.lpszMenuName = szAppName ;
 
 wndclass.lpszClassName = szAppName ;
 
 if (!RegisterClass (&wndclass))
 
 {
 
 MessageBox ( NULL, TEXT ("This program requires Windows NT!"),
 
 szAppName, MB_ICONERROR) ;
 
 return 0 ;
 
 }
 
 
 
 hwnd = CreateWindow ( szAppName, TEXT ("Menu Demonstration"),
 
 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 ;
 
}
 
LRESULT CALLBACK WndProc ( HWND hwnd, UINT message, WPARAM wParam,LPARAM lParam)
 
{
 
 static int idColor [5] = { WHITE_BRUSH, LTGRAY_BRUSH, GRAY_BRUSH,
 
 DKGRAY_BRUSH, BLACK_BRUSH } ;
 
 static int iSelection = IDM_BKGND_WHITE ;
 
 HMENU hMenu ;
 
 
 
 switch (message)
 
 {
 
 case WM_COMMAND:
 
 hMenu = GetMenu (hwnd) ;
 
 
 
 switch (LOWORD (wParam))
 
 {
 
 case IDM_FILE_NEW:
 
 case IDM_FILE_OPEN:
 
 case IDM_FILE_SAVE:
 
 case IDM_FILE_SAVE_AS:
 
 MessageBeep (0) ;
 
 return 0 ;
 
 case IDM_APP_EXIT:
 
 SendMessage (hwnd, WM_CLOSE, 0, 0) ;
 
 return 0 ;
 
 
 
 case IDM_EDIT_UNDO:
 
 case IDM_EDIT_CUT:
 
 case IDM_EDIT_COPY:
 
 case IDM_EDIT_PASTE:
 
 case IDM_EDIT_CLEAR:
 
 MessageBeep (0) ;
 
 return 0 ;
 
 
 
 case IDM_BKGND_WHITE: // Note: Logic below
 
 case IDM_BKGND_LTGRAY: // assumes that IDM_WHITE
 
 case IDM_BKGND_GRAY: // through IDM_BLACK are
 
 case IDM_BKGND_DKGRAY: // consecutive numbers in
 
 case IDM_BKGND_BLACK: // the order shown here.
 
 
 
 CheckMenuItem (hMenu, iSelection, MF_UNCHECKED) ;
 
 iSelection = LOWORD (wParam) ;
 
 CheckMenuItem (hMenu, iSelection, MF_CHECKED) ;
 
 
 
 SetClassLong (hwnd, GCL_HBRBACKGROUND, (LONG)
 
 GetStockObject
 
 (idColor [LOWORD (wParam) - IDM_BKGND_WHITE])) ;
 
 
 
 InvalidateRect (hwnd, NULL, TRUE) ;
 
 return 0 ;
 
 
 
 case IDM_TIMER_START:
 
 if (SetTimer (hwnd, ID_TIMER, 1000, NULL))
 
 {
 
 EnableMenuItem (hMenu, IDM_TIMER_START, MF_GRAYED) ;
 
 EnableMenuItem (hMenu, IDM_TIMER_STOP, MF_ENABLED) ;
 
 }
 
 return 0 ;
 
 
 
 case IDM_TIMER_STOP:
 
 KillTimer (hwnd, ID_TIMER) ;
 
 EnableMenuItem (hMenu, IDM_TIMER_START, MF_ENABLED) ;
 
 EnableMenuItem (hMenu, IDM_TIMER_STOP, MF_GRAYED) ;
 
 return 0 ;
 
 case IDM_APP_HELP:
 
 MessageBox (hwnd, TEXT ("Help not yet
 
implemented!"),
 
 szAppName, MB_ICONEXCLAMATION | MB_OK) ;
 
 return 0 ;
 
 
 
 case IDM_APP_ABOUT:
 
 MessageBox (hwnd,TEXT ("Menu Demonstration
 
Program\n")
 
 TEXT ("(c) Charles Petzold, 1998"),
 
 szAppName, MB_ICONINFORMATION | MB_OK) ;
 
 return 0 ;
 
 }
 
 break ;
 
 
 
 case WM_TIMER:
 
 MessageBeep (0) ;
 
 return 0 ;
 
 
 
 case WM_DESTROY:
 
 PostQuitMessage (0) ;
 
 return 0 ;
 
 }
 
 return DefWindowProc (hwnd, message, wParam, lParam) ;
 
}
 
MENUDEMO.RC ?姜村?
 
//Microsoft Developer Studio generated resource script.
 
#include "resource.h"
 
#include "afxres.h"
 
/////////////////////////////////////////////////////////////////////////////
 
// Menu
 
MENUDEMO MENU DISCARDABLE
 
BEGIN
 
 POPUP "&File"
 
 BEGIN
 
 MENUITEM "&New", IDM_FILE_NEW
 
 MENUITEM "&Open", IDM_FILE_OPEN
 
 MENUITEM "&Save", IDM_FILE_SAVE
 
 MENUITEM "Save &As...", IDM_FILE_SAVE_AS
 
 MENUITEM SEPARATOR
 
 MENUITEM "E&xit", IDM_APP_EXIT
 
 END
 
 POPUP "&Edit"
 
 BEGIN
 
 MENUITEM "&Undo", IDM_EDIT_UNDO
 
 MENUITEM SEPARATOR 
 
 MENUITEM "C&ut", IDM_EDIT_CUT
 
 MENUITEM "&Copy", IDM_EDIT_COPY
 
 MENUITEM "&Paste", IDM_EDIT_PASTE
 
 MENUITEM "De&lete", IDM_EDIT_CLEAR
 
 END
 
 POPUP "&Background"
 
 BEGIN
 
 MENUITEM "&White", IDM_BKGND_WHITE, CHECKED
 
 MENUITEM "&Light Gray", IDM_BKGND_LTGRAY
 
 MENUITEM "&Gray", IDM_BKGND_GRAY
 
 MENUITEM "&Dark Gray", IDM_BKGND_DKGRAY
 
 MENUITEM "&Black", IDM_BKGND_BLACK
 
 END
 
 POPUP "&Timer"
 
 BEGIN
 
 MENUITEM "&Start", IDM_TIMER_START
 
 MENUITEM "S&top", IDM_TIMER_STOP, GRAYED
 
 END
 
 POPUP "&Help"
 
 BEGIN
 
 MENUITEM "&Help...", IDM_APP_HELP
 
 MENUITEM "&About MenuDemo...", IDM_APP_ABOUT
 
 END
 
END
 
RESOURCE.H ?姜村?
 
// Microsoft Developer Studio generated include file.
 
// Used by MenuDemo.rc
 
#define IDM_FILE_NEW 40001
 
#define IDM_FILE_OPEN 40002
 
#define IDM_FILE_SAVE 40003
 
#define IDM_FILE_SAVE_AS 40004
 
#define IDM_APP_EXIT 40005
 
#define IDM_EDIT_UNDO 40006
 
#define IDM_EDIT_CUT 40007
 
#define IDM_EDIT_COPY 40008
 
#define IDM_EDIT_PASTE 40009
 
#define IDM_EDIT_CLEAR 40010
 
#define IDM_BKGND_WHITE 40011
 
#define IDM_BKGND_LTGRAY 40012
 
#define IDM_BKGND_GRAY 40013
 
#define IDM_BKGND_DKGRAY 40014
 
#define IDM_BKGND_BLACK 40015
 
#define IDM_TIMER_START 40016
 
#define IDM_TIMER_STOP 40017
 
#define IDM_APP_HELP 40018
 
#define IDM_APP_ABOUT 40019
 

MENUDEMO.RC彿坿宙峰亀公阻艇協吶暇汽議戻幣。暇汽議兆各葎仝MenuDemo々。寄謹方?朕嗤久?忖銚?宸祥頁傍艇駅倬壓忖銚念囚秘〆&〇。MENUITEM SEPARATOR偃峰頁壓仝Menu Item Properties々斤三崇嶄僉嶄仝Separator々崇恢伏議。廣吭暇汽嶄嗤匯倖?朕醤嗤仝 Checked々僉??総匯倖醤嗤仝Grayed々僉?。珊嗤?仝 Background々起竃塀暇汽嶄議励倖?朕哘乎梓乏會補秘?鳩隠炎紛憲頁參方峙議乏會?云殻會俶勣宸劔。侭嗤暇汽?議炎紛憲協吶壓RESOURCE.H嶄。

輝辺欺起竃塀暇汽仝File々才仝Edit々光?嗤購議WM_COMMAND嶧連扮?MENUDEMO殻會峪聞狼由窟竃炬蕗。仝 Background々起竃塀暇汽双竃MENUDEMO喘栖公嘘尚彭弼議励嶽孖嗤鮫泡。壓MENUDEMO.RC彿坿宙峰亀嶄?仝 White々暇汽??暇汽ID葎IDM_BKGND_WHITE?瓜炎參仝 CHECKED々?万壓暇汽?都円譜協僉嶄炎芝。壓MENUDEMO.C嶄?iSelection議峙瓜兜兵晒葎IDM_BKGND_WHITE。

Background々起竃塀暇汽貧議励嶽鮫泡屢札電鰍。輝MENUDEMO.C辺欺匯倖WM_COMMAND嶧連?遇乎嶧連嶄議wParam頁仝 Background々起竃塀暇汽貧議励?岻匯扮?万駅倬貫枠念僉嶄議嘘尚冲弼嶄茅渠僉嶄炎芝?旺委炎芝紗欺仟議嘘尚冲弼貧。葎緩?遍枠勣誼欺暇汽鞘凹?

hMenu = GetMenu (hwnd) ;
 

CheckMenuItem痕方喘栖函嶧朕念瓜僉嶄議?朕?

CheckMenuItem (hMenu, iSelection, MF_UNCHECKED) ;
 

iSelection議峙瓜譜協葎wParam議峙?仟議嘘尚冲弼瓜僉嶄?

iSelection = wParam ;
 
CheckMenuItem (hMenu, iSelection, MF_CHECKED) ;
 

完笥窃艶嶄議嘘尚冲弼噐頁瓜紋算葎仟議嘘尚冲弼?完笥?塋焦瘕魃篶ě湮ё缶??Windows聞喘仟議嘘尚冲弼賠茅完笥。

Timer起竃塀暇汽双竃阻曾倖僉??仝Start々才仝Stop々。蝕兵扮?仝Stop々僉?延葎子弼議?祥崧壓彿坿宙峰亀嶄議暇汽協吶匯劔?。輝艇僉夲仝Start々僉?扮?MENUDEMO編夕尼強匯倖協扮匂?泌惚撹孔?夸涙丼晒仝Start々僉??旺尼喘仝Stop々僉??

EnableMenuItem (hMenu, IDM_TIMER_START, MF_GRAYED) ;
 
EnableMenuItem (hMenu, IDM_TIMER_STOP, MF_ENABLED) ;
 

輝辺欺匯訳WM_COMMAND嶧連?旺拝wParam吉噐IDM_TIMER_STOP扮?MENUDEMO殻會氏唯峭柴方?尼喘仝 Start々??隼朔涙丼晒仝Stop々僉??

EnableMenuItem (hMenu, IDM_TIMER_START, MF_ENABLED) ;
 
EnableMenuItem (hMenu, IDM_TIMER_STOP, MF_GRAYED) ;
 

萩廣吭?壓協扮匂峇佩扮?MENUDEMO殻會音辛嬬辺欺wParam吉噐IDM_TIMER_START議WM_COMMAND嶧連。揖劔仇?壓協扮匂購液扮?MENUDEMO殻會匆音辛嬬辺欺wParam吉噐IDM_TIMER_STOP議WM_COMMAND嶧連。

輝MENUDEMO辺欺匯倖WM_COMMAND嶧連?遇乎嶧連議歌方wParam吉噐IDM_APP_ABOUT賜IDM_APP_HELP扮?MENUDEMO殻會?塋紹燦氐虜⊃鬘40?和匯嫗嶄?厘断繍委嶧連崇延葎斤三崇?。

輝MENUDEMO殻會辺欺匯倖WM_COMMAND嶧連?凪歌方wParam吉噐IDM_APP_EXIT扮?万公徭失窟僕匯倖WM_CLOSE嶧連。宸倖嶧連嚥DefWindowProc辺欺WM_SYSCOMMAND嶧連拝wParam吉噐SC_CLOSE扮窟僕公完笥嶧連侃尖殻會議嶧連屢揖。厘断繍壓云嫗朔中初府 POPPAD2扮壅徙聾冩梢宸倖諒籾。

AltStyle によって変換されたページ (->オリジナル) /