你们中的一些人可能正在开发一个程序,或者甚至只是有一个想法。 因此,我将教你如何通过添加一个下拉菜单来制作一个看起来很专业的程序,甚至教你如何让它在点击下拉菜单的项时执行基本操作
首先,找到你将放置代码以创建菜单的部分。
你将需要把它放在你的
switch (message)
代码部分的下方。
所以,你需要告诉它它在哪个
case
中。 在这种情况下,它将在
case WM_CREATE
中。 所以,这样写出来
case WM_CREATE
接下来,你将声明所有包含在屏幕顶部的菜单中的所有菜单。 为此,我们将使用
CreateMenu
函数来创建菜单。 你的代码应该如下所示
1 2 3 4
|
HMENU hMenubar = CreateMenu();
HMENU hFile = CreateMenu();
HMENU hEdit = CreateMenu();
HMENU hHelp = CreateMenu();
|
现在,hMenubar 将最终成为我们程序顶部的条带,它将容纳其他下拉菜单。 声明的其余菜单将是下拉菜单的标题。
现在我们将使用 AppendMenu 来放置菜单
1 2 3
|
AppendMenu(hMenubar, MF_POPUP, (UINT_PTR)hFile, "File");
AppendMenu(hMenubar, MF_POPUP, (UINT_PTR)hEdit, "Edit");
AppendMenu(hMenubar, MF_POPUP, (UINT_PTR)hHelp, "Help");
|
你不必 AppendMenu hMenubar,但你必须说明下拉菜单标题将位于其上。 你实际上可以随意命名 hMenubar,但你需要说出你在整个代码中命名的相同名称。 你也可以随意命名你的下拉菜单标题。 但同样的道理也适用于那些标题,就像 hMenubar 一样。
继续
为下拉菜单创建项目
1 2 3 4 5 6 7 8
|
AppendMenu(hFile, MF_STRING, ID_Save, "Save");
AppendMenu(hFile, MF_STRING, ID_Load, "Load");
AppendMenu(hFile, MF_STRING, ID_Exit, "Exit");
AppendMenu(hEdit, MF_STRING, ID_Undo, "Undo");
AppendMenu(hEdit, MF_STRING, ID_Redo, "Redo");
AppendMenu(hHelp, MF_STRING, ID_VWS, "Visit website");
|
现在,这只是说明菜单中将包含的内容。
保存将在 hFile 中,因为它在逗号的开头说 hFile。
接下来,你可能会注意到 ID_Save、ID_Load 以及所有这些。 我们目前无法像这样编译它,你必须将所有 ID 更改为 NULL,如下所示:
]MF_STRING, NULL, "Save");
但是如果你有 NULL,那么你就无法在点击它时给它一个命令。
所以,回到你的代码,在
1 2
|
return messages.wParam;
}
|
之后,执行此操作
1 2 3 4 5 6
|
#define ID_Save 1
#define ID_Load 2
#define ID_Exit 3
#define ID_Undo 4
#define ID_Redo 5
#define ID_VWS 6
|
现在你只剩下最后一件事才能编译它,但是如果你从下拉菜单中选择一个项目,它将不会执行任何操作。 (注意:你必须对你的 #define 进行编号,所以对于每个 #define,请执行 1、2、3。)
现在回到你做的最后一个 AppendMenu 下面,输入这个
1 2
|
SetMenu(hwnd, hMenubar);
break;}
|
现在你可以编译它并看到你漂亮的下拉菜单。 对它流口水,并在你完成流口水后回来。
好的,接下来我们编程命令,所以我们将声明
case WM_COMMAND:{
在此之下,你将开始制作命令,
让我们只做一些基本命令,以保持简短,它已经变得太长了。
1 2
|
if(LOWORD(wParam) == ID_Exit) {
exit(0); }
|
这是告诉它在单击带有 ID_Exit 的按钮时退出。
1 2
|
if(LOWORD(wParam) == ID_VWS) {
ShellExecute(NULL, "Open", "http://www.yoursitehere.com/", NULL, NULL, SW_SHOWNORMAL);}
|
现在,这是在说:如果你点击带有 ID_VWS 的按钮,则使用你的默认浏览器链接到它所说的链接。
你也可以在文件上执行 ShellExecute,但它只会使用默认打开方式打开文件(例如:.txt 将在记事本中打开,或者你将其设置为打开的任何内容)
你可以简单地将网络链接更改为
|
"C:\\Users\\{username}\\Desktop\\{Filename}.txt"
|
当你按下按钮时,它将打开该文件
我已经附加了 main.cpp,因此你可以在代码中进行修改。
附件:[main.cpp]