俄罗斯方块(五)画底板

至此为止,我们已经把自己的Panel整合入Windows的应用程序中了。接下来,我们对Panel进行底色的涂刷。

前两节说过,因为Panel继承自CWnd,所以它现在可以接受windows的显示消息了。

 

在类视图窗口中选中Panel类,在属性窗口中点选消息按钮,可以看到所有的Windows消息。找到WM_PAINT消息,添加对应的处理函数 OnPaint。
俄罗斯方块(五)画底板_第1张图片

 

然后就要用到MFC的GDI的一些类来画图了。

最重要的是C***DC(Device Context)类。其实可以把DC想象成是画板,所有的画图操作都要通过画板来完成。

DC类提供了很多画图方法,drawIcon, fillRect等等。

还有一些其他对象,CBitmap, CBrush, CFont,CPen等,可以用来画出不同的字体,或颜色。

 

我们简单给Panel刷个灰的底色:

void Panel::OnPaint()
{
	CPaintDC dc(this); // device context for painting	

	CRect rect;
	this->GetClientRect(rect);
	CBrush brushbg( RGB(125,125,125) );
	dc.FillRect(rect,& brushbg);
 

这里面还有一个GetClientRect的方法,这是CWnd的一个方法。可以得到当前窗口对象的内部大小

我们Panel的构建实在Dlg.h文件里面有一句  Panel m_Panel;来实现的。

创建的时候并没有设定窗体大小。

因为Panel是跟资源中IDC_PANEL捆绑在一起的。所以创建完成后,Dlg会自动按照IDC_PANEL的大小设定Panel.

这样,我们只需要通过GetClientRect的方法,就可以得到Panel实际的的大小尺寸了。

Rect其实就是Rectangle的缩写,里面保存着上下左右位置信息。

 

好了,运行一下代码,可以看到原来放Static Text的地方成了灰色的一块。OK!

你可能感兴趣的:(C++,c,windows,C#,mfc)