- 制作窗口的菜单基本框架
接下来开始设置菜单框架.
首先, 由于刚刚编译器报错, 所以对winmain.c做了如下修改:
winmain.c
......
int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
......
DialogBox(ghInstance, MAKEINTRESOURCE(DLG_MAIN), NULL, (DLGPROC)iNotepadCProc, (LPARAM)0);
......
}
然后是对于资源文件的修改.
首先是inotepad.rc的Dialog声明部分, 加入了使用菜单的说明.
inotepad.rc
......
DLG_MAIN DIALOG 0, 0, 400, 240
STYLE DS_MODALFRAME | DS_CENTER | WS_VISIBLE | WS_OVERLAPPEDWINDOW
CAPTION "C iNotepad"
MENU MENU_MAIN
FONT 9, "Segoe UI"
BEGIN
END
......
然后添加了基本的菜单.
inotepad.rc
......
MENU_MAIN MENU DISCARDABLE
BEGIN
POPUP "File"
BEGIN
MENUITEM "New", IDMU_NEWF
MENUITEM "Open", IDMU_OPEN
MENUITEM SEPARATOR
MENUITEM "Save", IDMU_SAVE
MENUITEM "Save As", IDMU_SVAS
MENUITEM SEPARATOR
MENUITEM "About", IDMU_ABUT
MENUITEM "Exit", IDMU_EXIT
END
POPUP "View"
BEGIN
MENUITEM "Statu Bar", IDMU_STUB
MENUITEM "Fonts", IDMU_FONT
END
END
之后就是头文件, 主要增加了关于菜单的说明.
resources.h
#define DLG_MAIN 1000
#define MENU_MAIN 1000
#define IDMU_NEWF 2001
#define IDMU_OPEN 2002
#define IDMU_SAVE 2003
#define IDMU_SVAS 2004
#define IDMU_ABUT 2005
#define IDMU_EXIT 2006
#define IDMU_STUB 2007
#define IDMU_FONT 2008
最后就来到了主程序对菜单信息的处理, 本次只处理了一个菜单项, 即"Exit"项.
winmain.c
......
BOOL CALLBACK iNotepadCProc(HWND hWnd, UINT uMessage, WPARAM wParam, LPARAM lParam)
{
switch(uMessage) {
......
case WM_COMMAND:
switch(wParam) {
case IDMU_EXIT:
goto end_dialog;
break;
}
......
}
......
运行效果如下:
点击Exit项可以退出程序.