自定义窗体实现-快充协议芯片hl6601支持qc2.0qc3.0华为fcpscp及voov快充

8.5自定义窗体实现完成了对资源文件的设置之后,我们现在在程序中已经可以通过头文件中定义的一系列TBitmap类型的指针对各个位图进行访问了,下面介绍具体的界面绘制过程。 8.5.1窗体界面的绘制窗体背景的绘制程序中窗体的背景可以通过设置FormMain的背景色来改变,或者,让ShapeClient的Brush的填充方式不取bsClear,然后为ShapeClient设定合适的色彩。但是,简单的背景色调始终不能满足人们的视觉欲望,所以要是能使用自己定义的图片作为背景就好了。方法有,添加Image组件设其Align为alClient,然后在Image中画图。但是,既然窗体的底图始终是要绘制的,如果添加了Image作为背景,那系统重绘窗体时始终还是要绘制它的背景,然后再绘制Image,何不定义一个函数代替Window绘制窗体底图的过程呢。实现起来也不难,只需要拦截重绘窗体背景的消息即可,这个消息是WM_ERASEBKGND,所以,在头文件中添加如下内容: void __fastcall OnWMEraseBkgnd(TWMEraseBkgnd& Msg); BEGIN_MESSAGE_MAP //拦截重画背景的事件MESSAGE_HANDLER(WM_ERASEBKGND,TWMEraseBkgnd,OnWMEraseBkgnd); END_MESSAGE_MAP(TForm);然后编写自己的绘制窗体背景的函数如下: //--- void __fastcall TFormMain::OnWMEraseBkgnd(TWMEraseBkgnd& Msg) {//重画背景TCanvas* canvas = new TCanvas; canvas->Handle = Msg.DC; int cx = ClientWidth/bmpFormBK->Width + 1; int cy = ClientHeight/bmpFormBK->Height + 1; for (int i=0; iWidth, i*bmpFormBK->Height,bmpFormBK); Msg.Result = true; } delete canvas;
pdf 文件大小:6.78MB