2011-10-10 18 views
0

消息循環,我身邊有這樣一些代碼類,讓我們把它的ToolBarButtonWTL:爲按鈕

TBBUTTON tbbutton; 
ZeroMemory(&tbbutton, sizeof(tbbutton)); 
tbbutton.idCommand = index; 
tbbutton.dwData = 0; 
tbbutton.fsState = TBSTATE_ENABLED | BSTYLE_BUTTON | BTNS_SHOWTEXT; 
tbbutton.iBitmap = I_IMAGENONE; 
tbbutton.iString = toolbar->AddStrings(text); 

toolbar->InsertButton(index, &tbbutton); 

哪裏工具欄是什麼CToolBarCtrl *

如何我可以創建的ToolBarButton類的消息循環?

class ToolbarButton : public CMessageMap{ 
    .. 
    BEGIN_MSG_MAP(ToolbarButton) 
    MESSAGE_HANDLER(WM_COMMAND, OnClick) 
    END_MSG_MAP() 

    .. 
} 

的OnClick沒有叫,還有什麼應該怎麼辦?

更新:我也想起答案的變種 - 工具欄處理點擊消息,通過idCommand查找按鈕並調用創建按鈕的OnClick。 ..但我有一個代碼,我正在重構,並看到按鈕類(是正確的〜約4個接口和按鈕周圍的15個類)做這樣的語法糖我需要的,但他們還包含我想要的過時的代碼和代碼消除和目前我不能切片它

回答

1

它應該以一種不同的方式工作。

  • 你不從消息映射類繼承,通常窗口類有消息映射
  • 工具欄按鈕不是窗口;工具欄是窗口控件,按鈕是其內部部件,沒有單獨的句柄,沒有消息映射;如果要將自定義按鈕放到工具欄上,它應該是(a)自定義按鈕,例如自定義按鈕,直到工具欄控件本身支持的範圍爲止,或(b)全功能窗口控制

我建議你檢查Using Toolbar Controls至於你的選擇真的是。

+0

感謝您的快速回復,請參閱我的更新 –

+0

請您詳細說明您將通過此自定義工具欄按鈕實現的目標是什麼? –