现在在做一个课程设计。用SDK做个简易CAD,我想做个类试windows自带的画图程序里的浮动工具条。
在网上找到的例子都是mfc做的。快昏死了...
谁能告诉我使用ToolBar的方法啊?
在网上找到的例子都是mfc做的。快昏死了...
谁能告诉我使用ToolBar的方法啊?
解决方案 »
- vc2010的ide,能否用可视化的方式编辑xml
- 怎么把创建窗口封装起来?
- EVC 编译时出现的一错误提示,不知是何意?
- 属性页关闭时出错!请教
- 向高手请教,windows核心编程的例五.使用GetWindowLongPtr().我包含了windows.h 为何编译仍提示为undeclare identifier
- 高分,高分啦,急求unicode程序编译配置问题
- 怎样同时使多个服务器中数据库中的记录保持一致
- 我想办一个经典电脑书籍网上销售点,各位认为如何啊?
- 谁可以给我一个提示,到那里可以找到”xml数据完整性检查“的源代码,最好是vc的,如果有大虾知道,mail:zhb03272sina.com,谢谢。
- 进度计划的困惑(请讨论)
- 一直按着某个按钮一段时间,然后松开,它消息的响应的过程是如何的啊? 如何实现“一直按下某个键,让它执行一个操作,当松开这个键的时
- handwolf(青松崖),请进来领分
怎么样把ToolBar加载进来..我都还没找到..
不知道是我的msdn太老了,还是自己方法不对..
浮动的复杂..那学习下不浮动的也好啊..
我现在只求..在主窗口上加载进来,然后在工具条上处理按钮的机制。
嫌分少的话..我可以在加.
谢谢啦....
TBBUTTON tbButtons[] = {
{ 0, 0, TBSTATE_ENABLED, TBSTYLE_SEP, 0 },
{ 0, IDM_VIEWCHART, TBSTATE_ENABLED, TBSTYLE_CHECKGROUP, 0 },
{ 1, IDM_VIEWALERT, TBSTATE_ENABLED, TBSTYLE_CHECKGROUP, 0 },
{ 2, IDM_VIEWLOG, TBSTATE_ENABLED, TBSTYLE_CHECKGROUP, 0 },
{ 3, IDM_VIEWREPORT, TBSTATE_ENABLED, TBSTYLE_CHECKGROUP, 0 },
{ 0, 0, TBSTATE_ENABLED, TBSTYLE_SEP, 0 },
{ 0, 0, TBSTATE_ENABLED, TBSTYLE_SEP, 0 },
{ 4, IDM_TOOLBARADD, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0 },
{ 5, IDM_TOOLBARMODIFY, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0 },
{ 6, IDM_TOOLBARDELETE, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0 },
{ 0, 0, TBSTATE_ENABLED, TBSTYLE_SEP, 0 },
{ 0, 0, TBSTATE_ENABLED, TBSTYLE_SEP, 0 },
{ 7, IDM_TOOLBARREFRESH, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0 },
{ 8, IDM_OPTIONSBOOKMARK, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0 },
{ 0, 0, TBSTATE_ENABLED, TBSTYLE_SEP, 0 },
{ 0, 0, TBSTATE_ENABLED, TBSTYLE_SEP, 0 },
{ 9, IDM_TOOLBAROPTIONS, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0 },
} ;
#define TB_ENTRIES sizeof(tbButtons)/sizeof(tbButtons[0])BOOL CreateToolbarWnd (HWND hWnd)
{ hWndToolbar = CreateToolbarEx (hWnd,
WS_CHILD | WS_BORDER | WS_VISIBLE,
IDM_TOOLBARID,
10, // number of tools inside the bitmap
hInstance,
idBitmapToolbar, // bitmap resource ID (can't use MAKEINTRESOURCE)
tbButtons,
TB_ENTRIES,0,0,0,0,sizeof(TBBUTTON)) ; return (hWndToolbar ? TRUE : FALSE) ;} // ToolbarInitializeApplication
TBBUTTON tbButton[]=
{
0,IDM_ADDTASK,TBSTATE_ENABLED,TBSTYLE_BUTTON,0,0,0,0,
1,IDM_NEW,TBSTATE_ENABLED,TBSTYLE_BUTTON,0,0,0,0,
2,IDM_DELTETE,TBSTATE_ENABLED,TBSTYLE_BUTTON,0,0,0,0,
0,0,TBSTATE_ENABLED,TBSTYLE_SEP,0,0,0,0,
3,IDM_PROPERTY,TBSTATE_ENABLED,TBSTYLE_BUTTON,0,0,0,0,
4,IDM_RENAME,TBSTATE_ENABLED,TBSTYLE_BUTTON,0,0,0,0,
5,IDM_BEGIN,TBSTATE_ENABLED,TBSTYLE_BUTTON,0,0,0,0,
6,IDM_STOP,TBSTATE_ENABLED,TBSTYLE_BUTTON,0,0,0,0,
7,IDM_HELP,TBSTATE_ENABLED,TBSTYLE_BUTTON,0,0,0,0,
8,IDM_EXIT,TBSTATE_ENABLED,TBSTYLE_BUTTON,0,0,0,0,
};
处理case WM_CREATE:
/创建工具栏
hToolBar=CreateToolbarEx(hwnd,
WS_CHILD|WS_BORDER|WS_VISIBLE|TBSTYLE_FLAT
|TBSTYLE_TOOLTIPS,
ID_TOOLBAR,
10,//该工具栏包含9个图形按钮
hInst,//使用系统提供的图形按钮
IDB_TOOLBAR,
tbButton,
10,
0,0,
0,0,
sizeof(TBBUTTON));
其中IDB_TOOLBAR为位图资源!
可以在资源中加入!但必须为16*16大小!
//设置工具栏提示的文本
lpnmhdr=(LPNMHDR)lParam;
if (lpnmhdr->code==TTN_NEEDTEXT)
{
lpttext=(LPTOOLTIPTEXT)lParam;
switch(lpttext->hdr.idFrom)
{
case IDM_ADDTASK:
lpttext->lpszText="添加任务";
break; case IDM_NEW:
lpttext->lpszText="新建下载任务";
break; case IDM_DELTETE:
lpttext->lpszText="删除任务";
break; case IDM_PROPERTY:
lpttext->lpszText="属性";
break; case IDM_RENAME:
lpttext->lpszText="重命名";
break; case IDM_BEGIN:
lpttext->lpszText="开始";
break;
case IDM_STOP:
lpttext->lpszText="暂停";
break;
case IDM_HELP:
lpttext->lpszText = "帮助";
break;
case IDM_EXIT:
lpttext->lpszText = "退出";
break; }
则是工具栏的具体消息处理:
例如:
switch (LOWORD (wParam))
{