创建toolbar不显示

jiaerboy 2009-12-21 12:38:23
#include <commctrl.h>
#include "maintoolbar.h"


HWND CreateSimpleToolbar(HWND hWndParent)
{

INITCOMMONCONTROLSEX icex;
icex.dwSize=sizeof(INITCOMMONCONTROLSEX);
icex.dwICC=ICC_BAR_CLASSES;
InitCommonControlsEx(&icex);
HINSTANCE g_hInst=GetModuleHandle(NULL);

const int bitmapSize = 16;

HWND hWndToolbar = CreateWindowEx(0, TOOLBARCLASSNAME, NULL,
WS_CHILD | TBSTYLE_WRAPABLE,
0, 0, 0, 0,
hWndParent, NULL, g_hInst, NULL);
if (hWndToolbar == NULL)
{
return NULL;
}

HIMAGELIST hImageList = ImageList_Create(
GetSystemMetrics(SM_CXICON),
GetSystemMetrics(SM_CXICON),
ILC_MASK,
1, 1);

for(int index = 0; index < 3; index++)
{
HICON hIconItem = LoadIcon (g_hInst, MAKEINTRESOURCE(IDI_TOOL1 + index));
ImageList_AddIcon(hImageList, hIconItem);
DestroyIcon(hIconItem);
}

SendMessage(hWndToolbar, TB_SETIMAGELIST,0,(LPARAM)hImageList);

TBBUTTON tbButtons[3] =
{
{ 0, IDM_NEW, TBSTATE_ENABLED,TBSTYLE_BUTTON,{0}, 0, (INT_PTR)L"New" },
{ 1, IDM_OPEN, TBSTATE_ENABLED,TBSTYLE_BUTTON,{0}, 0, (INT_PTR)L"Open"},
{ 2, IDM_SAVE, TBSTATE_ENABLED,TBSTYLE_BUTTON,{0}, 0, (INT_PTR)L"Save"}
};
SendMessage(hWndToolbar, TB_BUTTONSTRUCTSIZE,(WPARAM)sizeof(TBBUTTON), 0);
SendMessage(hWndToolbar, TB_ADDBUTTONS,(WPARAM)3,(LPARAM)&tbButtons);


ShowWindow(hWndParent,SW_SHOW);

return hWndToolbar;
}
...全文
62 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
SteelDemon 2010-07-07
  • 打赏
  • 举报
回复
试一下为你的按钮添加消息响应函数。
tigercopy 2009-12-21
  • 打赏
  • 举报
回复
if (hWndToolbar == NULL)
{
return NULL;
}

没有返回?调试一下,代码好像没什么问题
peachbrandy1 2009-12-21
  • 打赏
  • 举报
回复
InitCommonControls
jiaerboy 2009-12-21
  • 打赏
  • 举报
回复
现在图标也加载上了,,还是不显按钮
jiaerboy 2009-12-21
  • 打赏
  • 举报
回复
00401081 |. 50 |push eax ; /RsrcName
00401082 |. FF75 F4 |push dword ptr [ebp-C] ; |hInst
00401085 |. FF15 2C204000 |call dword ptr [<&USER32.LoadIconA>] ; \LoadIconA
0040108B |. 8BF8 |mov edi, eax
0040108D |. 57 |push edi ; /hIcon = NULL
0040108E |. 6A FF |push -1 ; |Index = FFFFFFFF (-1.)
00401090 |. FF75 F8 |push dword ptr [ebp-8] ; |hIml
00401093 |. FF15 08204000 |call dword ptr [<&COMCTL32.ImageList>; \ImageList_ReplaceIcon
00401099 |. 57 |push edi ; /hIcon
0040109A |. FF15 28204000 |call dword ptr [<&USER32.DestroyIcon>; \DestroyIcon

ImageList_ReplaceIcon函数的hicon参数为空,怎么回事

15,978

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧