[VC++]如何在win32程序中加入右击菜单并添加响应


0.先说一下如何在win32程序中打开控制台,复制以下代码即可:

#include "io.h"
#include "fcntl.h"

void InitConsole()  
{  
    int nRet= 0;  
    FILE* fp;  
    AllocConsole();   // 调用产生控制台的窗口
    nRet= _open_osfhandle((long)GetStdHandle(STD_OUTPUT_HANDLE), _O_TEXT);  
    //GetStdHandle 获取控制台的句柄,若没有AllocConsole(),获取标准的输入输出窗口句柄
	
    fp = _fdopen(nRet, "w");  
    //fdopen()会将nRet的文件描述词,转换为对应的文件指针后返回
    *stdout = *fp;  
    setvbuf(stdout, NULL, _IONBF, 0);//输出流

}  



下面来介绍一下如何在win32 中实现点击右键弹出菜单,步骤如下:

1:先在头文件中中先定义三个IDM资源,这三个参数很重要,在监听菜单点击事件的时候会用到。

#define IDM_AAA 200
#define IDM_BBB 201
#define IDM_CCC 202



2.定义一个全局变量
static HMENU hMenu;


3.在Init()方法中添加代码:

hMenu=CreatePopupMenu();

AppendMenu(hMenu,MF_STRING,IDM_AAA,_T("&AAA"));

AppendMenu(hMenu,MF_SEPARATOR,0,NULL);

AppendMenu(hMenu,MF_STRING,IDM_BBB,_T("&BBB"));

AppendMenu(hMenu,MF_STRING,IDM_CCC,_T("&CCC"));


4.在回调函数WndProc的WM_RBUTTONDOWN中添加右击响应代码

case WM_RBUTTONDOWN:
{
    printf("Right");
    POINT point;
    point.x=LOWORD(lParam);
    point.y=HIWORD(lParam);
    ClientToScreen(hWnd,&point);
    TrackPopupMenu(hMenu,TPM_RIGHTALIGN,point.x,point.y,0,hWnd,NULL);
    break;
}


还可以设置该项位选中状态:

CheckMenuItem(hMenu,IDM_AAA,MF_CHECKED);


5.在回调函数WndProc的WM_COMMAND中添加选中菜单的响应这 样便设置完毕了。
为了方便检验,我们加上以下代码:
cout<<wParam<<endl;


右击后点击查看输出台便会发现输出的是选中项在前面宏定义的数值。便可以对此数值switch分类处理了,表过不提。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值