//CStaticDirectX.h#if !defined(AFX_STATICDIRECTX_H__C4CADE79_6104_46F7_874E_AE48BA16657C__INCLUDED_)
#define AFX_STATICDIRECTX_H__C4CADE79_6104_46F7_874E_AE48BA16657C__INCLUDED_#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
// StaticDirectX.h : header file
///////////////////////////////////////////////////////////////////////////////
// CStaticDirectX windowclass CStaticDirectX : public CStatic
{
// Construction
public:
CStaticDirectX();

// Attributes
public:

// Operations
public:

// Overrides
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CStaticDirectX)
//}}AFX_VIRTUAL

// Implementation
public:
int GetMouseX()    { return m_lMousex; }
int GetMouseY()    { return m_lMousey; }
virtual ~CStaticDirectX();
static CRect GetRect(UINT uID, CDialog *pDlg) // This static function saves re-writing GetRect for every dialog app that needs it
{
CWnd* pWnd = pDlg->GetDlgItem(uID); ASSERT(pWnd);
CRect rect;
pWnd->GetWindowRect( &rect );
pDlg->ScreenToClient( &rect );
return rect;
}
private:
// Mouse control:
long    m_lMousex,m_lMousey; // Generated message map functions
protected:
//{{AFX_MSG(CStaticDirectX)
afx_msg void OnRButtonDown(UINT nFlags, CPoint point);
afx_msg void OnLButtonDown(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_STATICDIRECTX_H__C4CADE79_6104_46F7_874E_AE48BA16657C__INCLUDED_)//// StaticDirectX.cpp : implementation file
//#include "stdafx.h"
#include "main.h"
#include "StaticDirectX.h"#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif/////////////////////////////////////////////////////////////////////////////
// CStaticDirectXCStaticDirectX::CStaticDirectX()
{
}CStaticDirectX::~CStaticDirectX()
{
}
BEGIN_MESSAGE_MAP(CStaticDirectX, CStatic)
//{{AFX_MSG_MAP(CStaticDirectX)
ON_WM_RBUTTONDOWN()
ON_WM_LBUTTONDOWN()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()/////////////////////////////////////////////////////////////////////////////
// CStaticDirectX message handlersvoid CStaticDirectX::OnRButtonDown(UINT nFlags, CPoint point) 
{
// TODO: Add your message handler code here and/or call default
ShowCursor(FALSE);
// CStatic::OnRButtonDown(nFlags, point);
}void CStaticDirectX::OnLButtonDown(UINT nFlags, CPoint point) 
{
// TODO: Add your message handler code here and/or call default
ShowCursor(FALSE);
// CStatic::OnLButtonDown(nFlags, point);
}
继承的Cstatic怎么OnLButtonDown、OnRButtonDown不起作用呀,我在OninitDialog里
m_mystatic.Create("", WS_VISIBLE|SS_NOTIFY|SS_SUNKEN, CStaticDirectX::GetRect(IDC_STATIC_V1, this),(CWnd*)this);
运行结果m_mystatic创建成功了,可以看到效果,可就是OnLButtonDown、OnRButtonDown不起作用,大家帮忙看看。

解决方案 »

  1.   

    你的 static 要加上 Notify 属性,要不它是不会响应鼠标点击动做的
      

  2.   

    楼上说的对,static控件缺省不响应键盘和鼠标。
      

  3.   

    Create("", WS_VISIBLE|SS_NOTIFY|SS_SUNKEN, CStaticDirectX::GetRect(IDC_STATIC_V1, this),(CWnd*)this);
    已经加上了呀
      

  4.   


    m_mystatic.Create("", WS_VISIBLE|SS_NOTIFY|SS_SUNKEN, CStaticDirectX::GetRect(IDC_STATIC_V1, this),(CWnd*)this);你好象加了没有 ID 号定义?
      

  5.   

    if(!m_RunTimeSelect.Create("CLineWidthSelect",
    WS_VISIBLE|SS_NOTIFY|SS_SUNKEN|SS_CENTER,
    CRect(20,240,70,320),this,IDC_RUNTIME_SEL))
    {
    return FALSE;
    }这是我动态生成时用的,可以点的
      

  6.   

    在 VC 中的 VIEW 菜单下有个  ID= Resource symbol  选项点一下在弹出的对话中选取 NEW 取个名子,点 OK这就你加入的 ID 了,再把这个 ID 放到 CREATE 参数中
      

  7.   

    怪,无法访问XXXX.exe
    我重起一下
      

  8.   

    改成
    if (!m_VideoNo1.Create("saf", WS_VISIBLE|SS_NOTIFY|SS_SUNKEN, CStaticDirectX::GetRect(IDC_STATIC_V1, this),this,IDC_STATIC_V11))
    {
    return FALSE; 
    }
    还是不行呀,点了没反应,高手快来呀!!!!!!!!