//bow

解决方案 »

  1.   

    我是说自己从CWnd派生出一个类来,然后在向导中加入那个消息
    但是我得不到那个消息请问你Create的时候的style是怎么设置的
    谢谢
      

  2.   

    style要看你的需要了,最简单的WS_CHILD | WS_VISIBLE就可以了。
      

  3.   

    ft
    要是这样的话应该是不行的
    我贴一下我得代码
    H文件#if !defined(AFX_SPWNDGROUP_H__E361ACC5_EF20_499D_B512_A515BF305125__INCLUDED_)
    #define AFX_SPWNDGROUP_H__E361ACC5_EF20_499D_B512_A515BF305125__INCLUDED_#if _MSC_VER > 1000
    #pragma once
    #endif // _MSC_VER > 1000
    // SPWndGroup.h : header file
    //
    class CSPWndGroup : public CWnd
    {
    // Construction
    public:
    CSPWndGroup();// Attributes
    public:// Operations
    public:// Overrides
    // ClassWizard generated virtual function overrides
    //{{AFX_VIRTUAL(CSPWndGroup)
    //}}AFX_VIRTUAL// Implementation
    public: BOOL Create(LPCTSTR lpszWindowName, DWORD dwStyle, const RECT& rect,const RECT &rect1, CWnd* pParentWnd, UINT nID);
    virtual ~CSPWndGroup(); // Generated message map functions
    protected: //{{AFX_MSG(CSPWndGroup)
    afx_msg void OnMouseMove(UINT nFlags, CPoint point);
    afx_msg void OnPaint();
    afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
    afx_msg void OnLButtonUp(UINT nFlags, CPoint point);
    afx_msg void OnLButtonDblClk(UINT nFlags, CPoint point);
    //}}AFX_MSG DECLARE_MESSAGE_MAP()
    };///////////////////////////////////////////////////////////////////////////////{{AFX_INSERT_LOCATION}}
    // Microsoft Visual C++ will insert additional declarations immediately before the previous line.#endif // !defined(AFX_SPWNDGROUP_H__E361ACC5_EF20_499D_B512_A515BF305125__INCLUDED_)在.CPP文件中BEGIN_MESSAGE_MAP(CSPWndGroup, CWnd)
    //{{AFX_MSG_MAP(CSPWndGroup)
    ON_WM_MOUSEMOVE()
    ON_WM_PAINT()
    ON_WM_LBUTTONDOWN()
    ON_WM_LBUTTONUP()
    ON_WM_LBUTTONDBLCLK()
    //}}AFX_MSG_MAP
    END_MESSAGE_MAP()void CSPWndGroup::OnLButtonDblClk(UINT nFlags, CPoint point) 
    {
    AfxMessageBox("dd");
    CWnd::OnLButtonDblClk(nFlags, point);
    }
    但是双击还是没有响应
    其他的都没有问题
      

  4.   

    贴CSPWndGroup的代码有什么用,你CSPWndGroup的对象呢,如何创建的?
      

  5.   

    在CShView.h中定义
    CSPWndGroup group_tool;
    在CShView.cpp的OnInitialUpdate中Create
    group_tool.Create("Editing Tools",WS_CHILD |WS_VISIBLE,CRect(100,50,100,30),CRect(100,10,230,30),this,1);谢谢
      

  6.   

    看不出什么问题。CSPWndGroup的Create()函数是怎么写的呢?OnLButtonDown()等都正确惟独OnLButtonDblClk()?
    反正,你可以这样做个例子:
    建一个SDI project,写一个CTestWnd继承CWnd,什么也不做,只增加对WM_LBUTTONDBLCLK的响应,在CYourView中增加对象CTestWnd m_wnd;,在CYourView::OnInitialUpdate()中:
    CRect rc;
    rc.SetRect(0, 0, 100, 100);
    m_wnd.Create(NULL, "Test", WS_CHILD | WS_VISIBLE | WS_BORDER, rc, this, 1000);
    试试,肯定没问题。
      

  7.   

    我自己写一个Create函数
    BOOL CSPWndGroup::Create(LPCTSTR lpszWindowName, DWORD dwStyle, const RECT &rect,const RECT &rect1, CWnd *pParentWnd, UINT nID)
    {
     return CWnd::Create(AfxRegisterWndClass(NULL), lpszWindowName,dwStyle, rect, pParentWnd, nID);
    }
    结果就接收不到了
    改成return CWnd::Create(NULL,lpszWindowName,dwStyle, rect, pParentWnd, nID);就好了
      

  8.   

    请笑纳
    不过能不能说一下原因呢
    //bow
      

  9.   

    这两种方法区别就是,你用AfxRegisterWndClass(NULL)注册了一个Window Class,而AfxRegisterWndClass()的nClassStyle参数为NULL意味着用缺省的class style,而缺省的class style中有CS_DBLCLKS风格,设置了该风格以后,鼠标的double click消息被发送到你的窗口函数中去了,所以,你的消息处理函数不再接收到该消息。如果你对窗口函数(window procedure)有疑问,请参见MSDN。