MFC OnPaint CButton

Posted

技术标签:

【中文标题】MFC OnPaint CButton【英文标题】: 【发布时间】:2013-04-30 15:38:30 【问题描述】:

如何在 OnPaint 中为按钮分配位图?您可以使用 dcMemory 在其他地方调用它吗?

CPaintDC dc(this); 

CBitmap bmp, *poldbmp;
CDC Refinery;



//load the bitmap resouce
bmp.LoadBitmap(IDB_BITMAP1);


    //create a compataible memory DC
Refinery.CreateCompatibleDC( &dc);


//Select the bitmap into DC
poldbmp = Refinery.SelectObject( &bmp);


//Copy (BitBlt) bitmap from memory DC to screen DC
dc.BitBlt(10,10,100, 100, &Refinery,0, 0, SRCCOPY);

Refinery.SelectObject(poldbmp);

【问题讨论】:

您能否重新表述您的问题?为什么CBitmapButton 不足以供您使用? 【参考方案1】:

你的问题真的不清楚。每次处理 WM_PAINT 消息时都进行位图的加载是一个非常糟糕的主意,这往往是总是!

如果你需要一个有位图的按钮,我推荐你使用CMFCButton。您只需声明该类型的变量并对其执行DDX_CONTROL。我使用了它们,我还可以在第一次设置后更改它们呈现的图像。

【讨论】:

以上是关于MFC OnPaint CButton的主要内容,如果未能解决你的问题,请参考以下文章

MFC OnPaint()函数中最先调用CDialog::OnPaint()和最后调用CDialog::OnPaint()的巨大区别

MFC 自定义 OnPaint 未被可靠调用

MFC中OnDraw与OnPaint的区别

MFC OnPaint CButton

MFC 对话框在耗时的 OnPaint() 后消失

关于MFC中的OnPaint和OnDraw