不能用m_pTool = (CToolBar*)CToolBar::FromHandle(hWnd);这种方式。
只能用win32的方式,发送消息或getwindowlong,没有找到办法。

解决方案 »

  1.   

    LONG lStyle= Getwindowlong(hWnd,GWL_STYLE);
    if(lStyle&CBRS_FLOATING)
    ///
    这样不行:
      

  2.   

    我用过DWORD dwStyle = GetWindowLong(m_hWnd,GWL_STYLE);但结果根本就不对。
      

  3.   


    BOOL CToolBar::CreateEx(CWnd* pParentWnd, DWORD dwCtrlStyle, DWORD dwStyle, CRect rcBorders, UINT nID)
    {
    ASSERT_VALID(pParentWnd);   // must have a parent
    ASSERT (!((dwStyle & CBRS_SIZE_FIXED) && (dwStyle & CBRS_SIZE_DYNAMIC))); SetBorders(rcBorders); // save the style
    m_dwStyle = (dwStyle & CBRS_ALL);
    if (nID == AFX_IDW_TOOLBAR)
    m_dwStyle |= CBRS_HIDE_INPLACE; dwStyle &= ~CBRS_ALL;//注意这里,当dwStyle把值赋给m_dwstyle后就去掉了所有TOOLBAR风格,再//创建窗口,所以光从窗口获得style是不可行的。
      

  4.   

    DWORD dwStyle = SendMessage(hWnd,TB_GETSTYLE,0,0)
      

  5.   

    不过好像win32中没有CBRS_TOOLTIPS这样的风格
      

  6.   

    #define CBRS_ORIENT_HORZ    (CBRS_ALIGN_TOP|CBRS_ALIGN_BOTTOM)
    #define CBRS_ORIENT_VERT    (CBRS_ALIGN_LEFT|CBRS_ALIGN_RIGHT)
    要这样判断:
    if ((style & CBRS_ORIENT_HORZ) == CBRS_ORIENT_HORZ)
      

  7.   

    MFC源码里,toolbar在调用API CreateWindow创建窗口前有这样一句,
     dwStyle &= ~CBRS_ALL;//请看三楼。
    应该怎么样都不能通过window的Style来判断吧?
      

  8.   

    m_dwStyle = (dwStyle & CBRS_ALL);
    这里已经把TOOLBAR的专用风格保存到了m_dwStyle里面.
    dwStyle &= ~CBRS_ALL;
    这段代码是把Window通用风格与空间专用风格分离.
      

  9.   

    我理解错问题了,通过句柄只能获得ToolBar的部分风格,无法确定CBRS_ORIENT_HORZ和CBRS_ORIENT_VERT等风格。