背景:使用windows API 编写窗口应用程序,工具栏的应用。TCreateToolBar函数是一个自定义创建工具栏的函数。
问题:1.工具栏和 TreeView 树视图控件,列表框控件是一类的吗?
      2.TCreateToolBar 函数是放在 WM_CREATE 消息响应函数里吗?
      3.如果响应工具栏按钮要定义 WM_NOTIFY 消息处理函数吗?
    (最好说明理由!!!!!)      
        我把 TCreateToolBar 函数是放在 WM_CREATE 消息响应函数里面,工具栏显示异常,
    好像在窗口有一点工具栏的迹象,没有显示定义在工具栏上面的位图。
        帮忙看看下面的代码,看看有什么异常!!!!!!
void TCreateToolBar(HWND hParent,HINSTANCE hInstance)//工具栏的创建
{
INITCOMMONCONTROLSEX Icce; //常用控件初始化结构体    Icce.dwSize = sizeof(INITCOMMONCONTROLSEX); 
    Icce.dwICC=ICC_COOL_CLASSES|ICC_BAR_CLASSES; //注意这两个参数决定了是否注册Toolbar     InitCommonControlsEx(&Icce); 
HWND htb = CreateWindowEx( WS_EX_TOOLWINDOW/*扩展工具条风格*/,
                       TOOLBARCLASSNAME/*Toolbar类名  */, NULL,
   WS_CHILD|WS_VISIBLE|TBSTYLE_FLAT|SS_BITMAP/*窗口风格*/ ,
   0,0,30,30, hParent/*父窗口名*/, 
   NULL, hInstance, NULL);  HIMAGELIST hIList;// 建立一个Imagelist 控件, 
    hIList = ImageList_Create(20,20,ILC_COLOR4,1,4);  //MYICON_CX,MYICON_CY是每个按钮的大小     ImageList_Add( hIList, LoadBitmap( hInstance,MAKEINTRESOURCE(ID_PENCIL) ), NULL );  
             //加入事先作好的工具条位图ID_PENCIL    SendMessage(htb, TB_SETIMAGELIST, 0, (LPARAM)hIList); //通过消息把位图加入到Toolbar中 TBBUTTON TButton; //按钮的数据结构 
//TButton.bReserved = ;
TButton.dwData = 0;
TButton.fsState = TBSTATE_ENABLED;
TButton.fsStyle = TBSTYLE_SEP;
TButton.iBitmap = 0;
TButton.idCommand = 0;
TButton.iString = 0;    SendMessage(htb, TB_SETIMAGELIST, sizeof(TBBUTTON), 100); //设置按钮结构的大小 
    SendMessage(htb, TB_ADDBUTTONS, (UINT)5, (LPARAM)&TButton); //添加按钮到Toolbar中    ShowWindow(htb, SW_SHOWNORMAL); //显示工具栏
}

解决方案 »

  1.   

    button.fsStyle = TBSTYLE_BUTTON; 试试用这个风格另外你只有一个工具条按钮吗?只定义一个TBBUTTON 对象工具条按钮产生的是WM_COMMAND消息,不是WM_NOTIFY
      

  2.   


    好像有了,点击有反应了,但位图没有显示出来啊,
    这个不知道有问题没有?
    ImageList_Add( hIList, LoadBitmap( hInstance,MAKEINTRESOURCE(ID_PENCIL) ), NULL );  
                     //加入事先作好的工具条位图ID_PENCIL  要不哪位好心的仁兄留个邮箱,我把代码程序发过来,帮我看看,代码不多,一个win32程序,创建工具栏,!!!!