为什么在cdialog中找不到WM_ERASEBKGND呢 我可以在cview中找到.为什么在cdialog中找不到呢。郁闷。谁来帮个忙!!! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我想给一个cdialog加上一个背景图片.但是我在cdialog这个类中不到WM_ERASEBKGND这个消息.那我应该怎么做呢 其实还是有这个消息的,class wizard中选择消息时左下角有个filter,把它改成window就可以了,慢慢找找 我没有用这个消息.我用的是这个方法解决的饿void CMy454Dlg::OnPaint() { if (IsIconic()) { CPaintDC dc(this); // device context for painting SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0); // Center icon in client rectangle int cxIcon = GetSystemMetrics(SM_CXICON); int cyIcon = GetSystemMetrics(SM_CYICON); CRect rect; GetClientRect(&rect); int x = (rect.Width() - cxIcon + 1) / 2; int y = (rect.Height() - cyIcon + 1) / 2; // Draw the icon dc.DrawIcon(x, y, m_hIcon); } else { CDialog::OnPaint(); } CClientDC dc(this); CDC comdc; comdc.CreateCompatibleDC(&dc); comdc.SelectObject(&bitmap); CRect rect; GetClientRect(&rect); dc.BitBlt(0,0,rect.Width(),rect.Height(),&comdc,0,0,SRCCOPY);} 嘎嘎。找到了。解决了BOOL CMy454Dlg::OnEraseBkgnd(CDC* pDC) { // TODO: Add your message handler code here and/or call default CClientDC dc(this); bitmap.LoadBitmap(IDB_BITMAP1); CDC comdc; comdc.CreateCompatibleDC(&dc); comdc.SelectObject(&bitmap); CRect rect; GetClientRect(&rect); dc.BitBlt(0,0,rect.Width(),rect.Height(),&comdc,0,0,SRCCOPY); return true;// return CDialog::OnEraseBkgnd(pDC);} 以上2中方法哪个比较好.OnEraseBkgnd是cwn类在创建的时候先擦除背景.然后在从新绘制,WM_PAINT是在cwn类创建的时候发送的消息.感觉2个貌似是一样的。谁给你解释下他们的区别!!! vc 连接数据库 用ado好还是odbc好? 修改文件版本的信息 求鼠标拖选的代码 如何从链路层提取IP数据包 用研究过gina的吗?问个问题。 AT指令的问题. 数据库问题! 编译环境问题,帮忙看看 求助高手,急!急!急!急!急!急! 可不可以一次在listview中加入好多行?给50分 求助:请问能用libUIDK给属性表单做界面吗? 用 directshow 自带的wm asf writer保存video之后,怎么变形了
void CMy454Dlg::OnPaint()
{
if (IsIconic())
{
CPaintDC dc(this); // device context for painting SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0); // Center icon in client rectangle
int cxIcon = GetSystemMetrics(SM_CXICON);
int cyIcon = GetSystemMetrics(SM_CYICON);
CRect rect;
GetClientRect(&rect);
int x = (rect.Width() - cxIcon + 1) / 2;
int y = (rect.Height() - cyIcon + 1) / 2; // Draw the icon
dc.DrawIcon(x, y, m_hIcon);
}
else
{
CDialog::OnPaint();
} CClientDC dc(this); CDC comdc;
comdc.CreateCompatibleDC(&dc);
comdc.SelectObject(&bitmap);
CRect rect;
GetClientRect(&rect); dc.BitBlt(0,0,rect.Width(),rect.Height(),&comdc,0,0,SRCCOPY);
}
BOOL CMy454Dlg::OnEraseBkgnd(CDC* pDC)
{
// TODO: Add your message handler code here and/or call default
CClientDC dc(this); bitmap.LoadBitmap(IDB_BITMAP1);
CDC comdc;
comdc.CreateCompatibleDC(&dc);
comdc.SelectObject(&bitmap);
CRect rect;
GetClientRect(&rect); dc.BitBlt(0,0,rect.Width(),rect.Height(),&comdc,0,0,SRCCOPY);
return true;
// return CDialog::OnEraseBkgnd(pDC);
}
WM_PAINT是在cwn类创建的时候发送的消息.感觉2个貌似是一样的。谁给你解释下他们的区别!!!