21xrx.com
2024-12-27 16:32:34 Friday
登录
文章检索 我的文章 写文章
C++编程教程:如何创建菜单?
2023-06-29 00:19:47 深夜i     --     --
C++编程 教程 创建菜单

在C++编程中,创建菜单是非常重要的一项技能。菜单可以让你的程序具有更好的用户交互性和易用性,提高程序的使用体验。在本教程中,我将向大家介绍如何创建自定义菜单。

1、首先创建一个窗口

在C++中,可以使用Win32或MFC创建窗口,这里以Win32为例。创建窗口的代码如下:


WNDCLASSEX wc;

HWND hwnd;

MSG Msg;

  

//创建窗口类

wc.cbSize = sizeof(WNDCLASSEX);

wc.style = 0;

wc.lpfnWndProc = WndProc;

wc.cbClsExtra = 0;

wc.cbWndExtra = 0;

wc.hInstance = hInstance;

wc.hIcon = LoadIcon(NULL, IDI_APPLICATION);

wc.hCursor = LoadCursor(NULL, IDC_ARROW);

wc.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);

wc.lpszMenuName = NULL;

wc.lpszClassName = "Window Class";

wc.hIconSm = LoadIcon(NULL, IDI_APPLICATION);

//注册窗口类

if (!RegisterClassEx(&wc))

{

  MessageBox(NULL, "Window Registration Failed!", "Error!",

  MB_ICONEXCLAMATION | MB_OK);

  return 0;

}

//创建窗口

hwnd = CreateWindowEx(

  WS_EX_CLIENTEDGE,

  "Window Class",

  "The Title of My Window",

  WS_OVERLAPPEDWINDOW,

  CW_USEDEFAULT, CW_USEDEFAULT, 240, 120,

  NULL, NULL, hInstance, NULL);

if (hwnd == NULL)

{

  MessageBox(NULL, "Window Creation Failed!", "Error!",

  MB_ICONEXCLAMATION | MB_OK);

  return 0;

}

//显示窗口

ShowWindow(hwnd, nCmdShow);

UpdateWindow(hwnd);

//消息循环

while (GetMessage(&Msg, NULL, 0, 0) > 0)

{

  TranslateMessage(&Msg);

  DispatchMessage(&Msg);

}

return Msg.wParam;

2、创建菜单

在创建窗口后,可以创建菜单以提供用户选择。菜单分为主菜单和子菜单两种,主菜单是一级的菜单,而子菜单则是从主菜单延伸出的二级菜单。以下是创建菜单的代码:


HMENU hMenu, hSubMenu;

  

//创建主菜单

hMenu = CreateMenu();

//创建子菜单

hSubMenu = CreatePopupMenu();

AppendMenu(hSubMenu, MF_STRING, ID_FILE_NEW, "&New");

AppendMenu(hSubMenu, MF_STRING, ID_FILE_OPEN, "&Open");

AppendMenu(hSubMenu, MF_SEPARATOR, 0, NULL);

AppendMenu(hSubMenu, MF_STRING, ID_FILE_EXIT, "&Exit");

AppendMenu(hMenu, MF_STRING | MF_POPUP, (UINT)hSubMenu, "&File");

//将菜单附加到窗口

SetMenu(hwnd, hMenu);

3、处理菜单事件

创建菜单后,需要处理菜单事件,以响应用户的选择。以下是处理菜单事件的代码:


LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)

{

  switch (msg)

  {

    case WM_COMMAND:

      switch (LOWORD(wParam))

      

        case ID_FILE_NEW:

          //处理“New”菜单事件

          break;

        case ID_FILE_OPEN:

          //处理“Open”菜单事件

          break;

        case ID_FILE_EXIT:

          //处理“Exit”菜单事件

          break;

      

      break;

    case WM_DESTROY:

      PostQuitMessage(0);

      break;

    default:

      return DefWindowProc(hwnd, msg, wParam, lParam);

  }

  return 0;

}

到这里,我们就完成了一个简单的菜单。你现在可以自由地在菜单中添加更多项目,并在处理菜单事件时执行自己的代码。

总结

本文简单介绍了如何在C++中创建自定义菜单。通过本文的学习,相信你已经掌握了如何使用菜单增强你的程序的用户交互性。当然,这只是C++编程的一个方面。在学习C++编程的同时,我们还应该深入学习其他的知识,例如数据结构、算法等,以提高自己的编程水平。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复
    相似文章