21xrx.com
2024-11-24 18:04:51 Sunday
登录
文章检索 我的文章 写文章
C++编写弹出菜单
2023-07-11 10:45:14 深夜i     --     --
C++ 编写 弹出菜单

在C++编程中,弹出菜单是很常见的一种GUI组件。弹出菜单可以作为程序的一部分进行设计,也可以作为用户交互的一种方式来呈现。

实现一个弹出菜单需要先创建一个菜单对象,并绘制出菜单项。以下是一个基本的实现代码:


#include <iostream>

#include <windows.h>

int main()

{

  // 创建菜单项

  HMENU hmenu = CreatePopupMenu();

  AppendMenu(hmenu, MF_STRING, 1, "Option 1");

  AppendMenu(hmenu, MF_STRING, 2, "Option 2");

  AppendMenu(hmenu, MF_SEPARATOR, 0, NULL);

  AppendMenu(hmenu, MF_STRING, 3, "Exit");

  // 显示弹出菜单

  POINT pt;

  GetCursorPos(&pt);

  UINT clicked = TrackPopupMenu(hmenu, TPM_RETURNCMD | TPM_NONOTIFY, pt.x, pt.y, 0, GetForegroundWindow(), NULL);

  if (clicked == 1)

    std::cout << "Option 1 selected" << std::endl;

    // 进行 Option 1 的操作

  

  else if (clicked == 2)

    std::cout << "Option 2 selected" << std::endl;

    // 进行 Option 2 的操作

  

  else if (clicked == 3)

    std::cout << "Exit selected" << std::endl;

    // 进行退出程序的操作

  

  // 释放菜单对象

  DestroyMenu(hmenu);

  return 0;

}

本代码使用了Windows API中的一些函数,比如CreatePopupMenu、AppendMenu和TrackPopupMenu。

首先,通过CreatePopupMenu创建了一个空的菜单对象hmenu,并使用AppendMenu将菜单项添加到菜单中。在这个例子中,菜单项包括"Option 1"、"Option 2"和"Exit",其中"Exit"与前面的两项之间隔了一个分隔条(MF_SEPARATOR)。这个菜单可以被当做一种自定义的弹出菜单,在需要的时候被显示出来。

随后,代码获取当前鼠标位置,使用TrackPopupMenu函数显示弹出菜单。TrackPopupMenu函数指定了如何显示菜单。其中TPM_RETURNCMD表示菜单项被选择时,返回所选菜单项的ID;TPM_NONOTIFY表示不发送任何通知消息;pt.x和pt.y指定菜单显示的位置;0表示使用默认的菜单项;GetForegroundWindow函数获取了前台窗口句柄。所选的菜单项ID被存储在clicked变量中。

最后,DestroyMenu函数释放了菜单对象hmenu的内存。

总之,弹出菜单是一种常见的用户交互方式。本例中,我们使用了Windows API函数来实现一个简单的弹出菜单。您可以根据项目需求进行自定义和完善。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复