现在的位置: 首页 > 自动控制 > 工业·编程 > 正文

自绘按钮+弹出式菜单变身任意位置的菜单

2013-01-09 08:17 工业·编程 ⁄ 共 574字 ⁄ 字号 暂无评论

首先,在你想要放菜单的位置画一个按钮

hButton = CreateWindow(TEXT("button"),TEXT(""),WS_CHILD|WS_VISIBLE|BS_OWNERDRAW,rect.left+5,rect.bottom-20,40,15,hwnd,(HMENU)5000,hInst,NULL);

创建按钮的时候把stytle中设为BS_OWNERDRAW,此时,会给消息处理函数发一个WM_DRAWITEM消息,参数lParam是一个包含自绘信息的结构体,因此,在这个消息下可以自己在按钮上绘制想要的效果

然后在WM_COMMAND中创建弹出式菜单。

case 5000:

GetClientRect(hwnd,&rect);
p.x=rect.left-5+cxClient/5;
p.y=rect.bottom-25;
ClientToScreen(hwnd1,&p);//屏幕与客户区的点转换
TrackPopupMenu(GetSubMenu(LoadMenu(hInst,MAKEINTRESOURCE(IDR_MENU)),0),TPM_LEFTALIGN|TPM_BOTTOMALIGN,p.x,p.y,0,hwnd1,0);
//这里的IDR_MENU是你在资源文件中创建的菜单

这样,就可以做到像QQ主界面左下角的那样子的菜单了~

给我留言

留言无头像?