首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

如何会出现按钮呢

2014-07-07 
怎么会出现按钮呢要接受鼠标和键盘接受,按钮必须是可见和可用的。void CMyButton::OnPaint(){CPaintDC dc(t

怎么会出现按钮呢
要接受鼠标和键盘接受,按钮必须是可见和可用的。





void CMyButton::OnPaint()
{
CPaintDC dc(this); // device context for painting
// TODO: 在此处添加消息处理程序代码
// 不为绘图消息调用 CButton::OnPaint()


//CRect rect;
//GetClientRect(&rect);
//CBrush brush(RGB(255,0,0));
//dc.FillRect(&rect,&brush);


}

 如此覆盖 onpaint,自然是看不到按钮的,非常自然合理。

戏剧性的事情发生了


在按钮所在区域后,居然弹出一个消息框来。

void CfgfDlg::OnBnClickedButton1()
{
// TODO: 在此添加控件通知处理程序代码
MessageBox("xx",NULL,MB_YESNO);
}


弹出后MessageBox,按钮再现。什么原因?


CPaintDC的工作仅仅是从消息队列中除去wm_paint和 擦出背景的作用. 并不会绘制按钮


怎么会按钮在现呢

可见是指WS_VISIBLE,与没画出来而看不见是有区别的

[解决办法]

引用:
引用:引用:如此覆盖 onpaint,自然是看不到按钮的,非常自然合理。

这太错误了。系统给你一个区域画按钮,你没画而已。

要接受鼠标和键盘接受,按钮必须是可见和可用的。

是windows 程序设计说的,
9.1.9

也就说,但看不见按钮 时候,你点击是……

正解。你看不见不代表不可见。
[解决办法]
“ return DefWindowProc(hwnd,msg,wp,lp);”改为:
return CallWindowProc(OldButtonProc,hwnd,msg,wp,lp);

热点排行