炫彩界面库论坛

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 4268|回复: 2

PopupMenuWindow 弹出菜单

[复制链接]
  • TA的每日心情
    开心
    2022-1-9 18:18
  • 发表于 2011-9-11 14:55:50 | 显示全部楼层 |阅读模式
    PopupMenuWindow 弹出菜单
    鼠标右键弹出菜单.XE_MENUSELECT:菜单项选择事件.
    XE_MENUEXIT:菜单退出事件.
    步骤:
    1.XPopupMenuWnd_CreateWindow()创建弹出菜单.
    2.XPopupMenuWnd_AddItem()添加菜单项.
    3.XPopupMenuWnd_Popup()显示弹出菜单.
    示例代码:
    1. bool CALLBACK My_OnRButtonUp(HWINDOW hWindow,UINT flags,POINT *pPt);
    2. bool CALLBACK My_MenuSelect(HWINDOW hWindow,int id);
    3. bool CALLBACK My_MenuExit(HWINDOW hWindow);
    4. int APIENTRY _tWinMain(HINSTANCE hInstance,  HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow)
    5. {
    6.         XInitXCGUI();
    7.         //创建窗口
    8.         HWINDOW hWindow=XWnd_CreateWindow(400,200,300,200,L"窗口");
    9.         ShowWindow(XWnd_GetHWnd(hWindow),SW_SHOW);
    10.         //注册消息
    11.         XWnd_RegisterMessage(hWindow,WM_RBUTTONUP,My_OnRButtonUp);
    12.         XWnd_RegisterMessage(hWindow,XWM_MENUSELECT,My_MenuSelect);
    13.         XWnd_RegisterMessage(hWindow,XWM_MENUEXIT,My_MenuExit);
    14.         XRunXCGUI();
    15.         return 0;
    16. }

    17. bool CALLBACK My_OnRButtonUp(HWINDOW hWindow,UINT flags,POINT *pPt)
    18. {
    19.         POINT pt=*pPt;

    20.         pt.x+=XWnd_GetClientLeft(hWindow);
    21.         pt.y+=XWnd_GetClientTop(hWindow);
    22.         
    23.         //创建弹出菜单
    24.         HWINDOW hMenu=XPopupMenuWnd_CreateWindow();
    25.         XPopupMenuWnd_AddItem(hMenu,201,L"111");
    26.         XPopupMenuWnd_AddItem(hMenu,202,L"222");
    27.         XPopupMenuWnd_AddItem(hMenu,203,L"333");

    28.         XPopupMenuWnd_AddItem(hMenu,204,L"444",203);
    29.         XPopupMenuWnd_AddItem(hMenu,205,L"555",203);
    30.         XPopupMenuWnd_AddItem(hMenu,206,L"666",203);

    31.         XPopupMenuWnd_AddItem(hMenu,207,L"777",206);
    32.         XPopupMenuWnd_AddItem(hMenu,208,L"888",206);
    33.         XPopupMenuWnd_AddItem(hMenu,209,L"999",206);

    34.         ClientToScreen(XWnd_GetHWnd(hWindow),&pt);
    35.         XPopupMenuWnd_Popup(hMenu,hWindow,pt.x,pt.y);
    36.         return false;
    37. }

    38. bool CALLBACK My_MenuSelect(HWINDOW hWindow,int id)  //菜单选择
    39. {
    40.         XTRACE("菜单ID=%d\n",id);
    41.         return false;
    42. }

    43. bool CALLBACK My_MenuExit(HWINDOW hWindow) //菜单退出
    44. {
    45.         XTRACE("菜单退出\n");
    46.         return false;
    47. }
    复制代码

    程序截图:

    该用户从未签到

    发表于 2013-4-29 08:24:13 | 显示全部楼层
    如果我使用的事框架窗口,如何控制弹出菜单的有效区域,也就是在菜单值属于某个panel,其他的点击无效

    该用户从未签到

    发表于 2013-8-9 14:23:41 | 显示全部楼层
    kikay_lee 发表于 2013-4-29 08:24
    如果我使用的事框架窗口,如何控制弹出菜单的有效区域,也就是在菜单值属于某个panel,其他的点击无效 ...

    兄弟,你搞定了吗,好像这个没有对于某个元素的弹出菜单控制!
    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

    QQ|Archiver|手机版|小黑屋|炫彩界面库 ( 鄂ICP备2023014763号-1 )

    GMT+8, 2024-5-2 15:11 , Processed in 0.072856 second(s), 21 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2021, Tencent Cloud.

    快速回复 返回顶部 返回列表