WEB开发网
开发学院软件开发VC 用VC++仿制金山毒霸专杀工具界面 阅读

用VC++仿制金山毒霸专杀工具界面

 2008-01-19 20:25:05 来源:WEB开发网   
核心提示:其中两个“*”行之间的部分为所添加部分,这段代码的作用是将那幅背景图片画在窗体上, 其中我使用了StretchBlt来画出窗体,StretchBlt比BitBlt要慢许多,用VC++仿制金山毒霸专杀工具界面(3),如果你想得到更好的速度,可以考虑建立与背景位图相同尺寸的窗体,4个位图,为此,然后

其中两个“*”行之间的部分为所添加部分。

这段代码的作用是将那幅背景图片画在窗体上, 其中我使用了StretchBlt来画出窗体,StretchBlt比BitBlt要慢许多,如果你想得到更好的速度,可以考虑建立与背景位图相同尺寸的窗体,然后用BitBlt来画出。CBitmap bmpBackground;最好作为CInterfaceDlg的成员变量并在CInterfaceDlg::OnInitDialog中提前加载位图,感兴趣的朋友可以试试。

编译,运行。可看到修改后的效果,由于该图片是平铺在窗体上的,如果图片和窗体尺寸不一致就会导致图片发生扭曲。因此可将窗体调整到与图片相同或相近的尺寸大小,那么运行后看起来就顺眼多了。但是窗体边框还是不大对劲,于是再进vc的资源编辑器,将窗体的Border由“Dialog Frame”该为“Thin”,重新编译,运行,搞定!

但是没过一秒钟就觉得这话说早了,标题栏没了,窗体怎么移动啊?

别急,车到山前必有路,我们不妨骗骗Windows。当我们的鼠标在窗体任意位置上拖动鼠标时,让Windows以为鼠标在标题栏上拖动,不就可以实现任意点击窗体的什么地方都可以移动窗体了吗?于是在CInterfaceDlg::OnLButtonDown(UINT nFlags, CPoint point)中添加下面一句:PostMessage(WM_NCLBUTTONDOWN,HTCAPTION,MAKELPARAM(point.x, point.y));该语句的作用是向系统发送HTCAPTION消息,让系统以为鼠标点在标题栏上。

现在编译,运行,真的搞定了!

二.按钮问题

Duba_GOP.exe中包括两类按钮,第一类就是上面所说的四个图片按钮,可以CBitmap类来实现:

在窗体上添加四个Button,设为Bitmap和OwnerDraw风格。为窗体添加4个CBitmap的成员变量,比如:

CBitmapButton  m_StartBtn;并与这四个Button关联上,再在CInterfaceDlg::OnInitDialog()中添加:m_StartBtn.LoadBitmaps(IDB_BITMAPONNORMAL,IDB_BITMAPONDOWN);//让窗体初始化时就加载按钮位图其中IDB_BITMAPONNORMA是一般状态下的按钮的图片ID,IDB_BITMAPONDOWN是鼠标按下时的按钮的图片ID。 合理摆放这四个按钮的位置,使其与Duba_GOP.exe界面上的位置一致,现在运行一下看看,界面增色不少吧。只是有一点:“开始扫描”这个按钮比较特殊,当鼠标点击时,会变成停止的位图,当再次点击时,又变成开始的位图,因此这个按钮拥有两套,4个位图。为此,再为CInterfaceDlg添加一个成员变量: BOOL m_bEnable;并在CInterfaceDlg::OnInitDialog()中设其初值为True。

上一页  1 2 3 4 5  下一页

Tags:VC 仿制 金山

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接