TB_LOADIMAGES消息是否返回有效计数?

时间:2016-08-05 04:25:33

标签: winapi toolbar

这是我程序的一个片段,最后一行将TB_LOADIMAGES消息发送到新创建的工具栏。

hWndToolbar = CreateWindowEx(0, TOOLBARCLASSNAME, TEXT("This is the toolbar"), WS_CHILD | TBSTYLE_TOOLTIPS,
  0, 500, 200, 32, hWndMain, (HMENU) ID_TOOLBAR, hInstance, NULL);
if (!hWndToolbar) return false;

const int numButtons = 3;
TBBUTTON tbButtonsAdd[numButtons] = {
    {MAKELONG(HIST_BACK,0), IDM_ABOUT, TBSTATE_ENABLED, BTNS_AUTOSIZE, {0}, 0, (INT_PTR) TEXT("junk")},
    {MAKELONG(HIST_FORWARD,0), IDM_ABOUT, TBSTATE_ENABLED, BTNS_AUTOSIZE, {0}, 0, (INT_PTR) TEXT("two")},
    {MAKELONG(HIST_FAVORITES,0), IDM_ABOUT, TBSTATE_ENABLED, BTNS_AUTOSIZE, {0}, 0, (INT_PTR) TEXT("three")}
}; 

debugInt = SendMessage(hWndToolbar, TB_LOADIMAGES, (WPARAM)IDB_HIST_SMALL_COLOR, (LPARAM)HINST_COMMCTRL);

根据我读到的here,SendMessage()的返回值应该是图像列表中的图像数量,但我总是看到0.我是否误读了文档?我会将0视为失败。

否则工具栏似乎工作正常,加载的图像确实存在。

1 个答案:

答案 0 :(得分:1)

文档具有误导性。返回值实际上表示添加到图像列表的第一个图像的索引(即在添加新图像之前存在的图像数量)。

因此,当您第一次发送此消息时(假设您之前未将自己的非空图像列表分配给工具栏),0是成功的预期回报。如果再次发送消息以添加更多图像,则会看到返回的值不同。