try this way,if it will help you out in your case:// part of my app's InitInstance() function WNDCLASS tempwndclass; GetClassInfo(NULL, "BUTTON", &tempwndclass); // get default for button, since that's what i'm overriding tempwndclass.style &= ~CS_DBLCLKS; // remove double-click flag tempwndclass.lpszClassName = "MYBUTTON"; // give my class unique name RegisterClass(&tempwndclass); // register my new button class// my button's PreCreateWindow() function BOOL CCustomButton::PreCreateWindow(CREATESTRUCT& cs) { cs.lpszClass = "MYBUTTON"; // use the recently registered class return CButton::PreCreateWindow(cs); }
{
WNDCLASS wndcls;
VERIFY(GetClassInfo(NULL, _T("BUTTON"), &wndcls)); wndcls.lpszClassName = _T("ExtButton");
wndcls.style &= ~CS_DBLCLKS;
VERIFY(AfxRegisterClass(&wndcls)); cs.lpszClass = wndcls.lpszClassName; return PreCreateWindow(CREATESTRUCT& cs);
}
BOOL CMYBUTTON::PreCreateWindow(CREATESTRUCT& cs)
{
WNDCLASS wndcls;
VERIFY(GetClassInfo(NULL, _T("BUTTON"), &wndcls)); wndcls.lpszClassName = _T("XPButton");
wndcls.style &= ~CS_DBLCLKS;
VERIFY(AfxRegisterClass(&wndcls)); cs.lpszClass = wndcls.lpszClassName; return PreCreateWindow(cs);
}在连续单击按钮时mouseup、mousedown还是不能及时响应
WNDCLASS tempwndclass;
GetClassInfo(NULL, "BUTTON", &tempwndclass); // get default for button,
since that's what i'm overriding
tempwndclass.style &= ~CS_DBLCLKS; // remove double-click flag
tempwndclass.lpszClassName = "MYBUTTON"; // give my class unique name
RegisterClass(&tempwndclass); // register my new button class// my button's PreCreateWindow() function
BOOL CCustomButton::PreCreateWindow(CREATESTRUCT& cs)
{
cs.lpszClass = "MYBUTTON"; // use the recently registered class return CButton::PreCreateWindow(cs);
}
我看了别人的几个这方面代码,虽不完全一样,但是都一样的迟钝,倒是用dc的很快
这是怎么讲???
不可以吗?
不可以吗?不是这么回事,当把一个button设置成owner draw后,自己再重画这个按钮的各种状态做成一个新样貌的按钮后发现在连续点击时总不能及时响应鼠标的按下,所以要把该窗口类的CS_DBLCLKS去掉,但是在MFC里要怎么做呢?在我这里按照两位星侠的代码好像并没有起到什么效果。急呀~~~~~~~~~~~~~~~~~~~~~~~
不会吧,这么狠。
其实,我一直在想:在VB里设置Command1.Style = 1然后subclass,自己在窗口函数里来绘制commandbutton的效果,这样的结果一来,每次响应鼠标的速度和标准的按钮响应速度是一样的,而在MFC里怎么就不行呢???所以,一定要在MFC里也实现这个!!!而且,我还是从CButton继承来的呢,怎还是不好用呢???
烦!!!!!!!!!!
BOOL PreTranslateMessage(MSG *pMsg)
{
if(pMsg->message==WM_LBUTTONDBLCLK)
return TRUE;
}
BOOL PreTranslateMessage(MSG *pMsg)
{
if(pMsg->message==WM_LBUTTONDBLCLK)
return TRUE;
}