CustomControl是一个非常好的东东,既可以实现自定义控件,又不必从零开始做一个控件,也不必知道COM、COM+的知识,而且是与MFC无缝集成,编程灵活性也大大地提高了哦~
更改它的属性如图。Class一定要填,这个是该控件的窗口类名,不区分大小写!Style是由classWizard自己维护的,不用手动更改了!

这时,如果在debug模式下编译运行,会发现根本就无法运行!为什么呢?因为有窗口类,但是没有注册,所以程序会自动退出。这里,在CustomControl上右键用ClassWizard来增加一个基类为CWnd的类,类名为CCustomTest.
添加一个private
的函数RegisterWndClass, 在其中添加注册窗口类的代码。如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | BOOL CCustomTest::RegisterWndClass() { HINSTANCE hIns = AfxGetInstanceHandle(); WNDCLASS wc; //确保没被注册,MYWNDCLASS是一个字符串常量,在类的头文件中定义的 if(!GetClassInfo(hIns, MYWNDCLASS, &wc)) { //把各项参数填齐全 wc.style = CS_DBLCLKS; wc.lpszClassName = MYWNDCLASS; wc.lpfnWndProc = ::DefWindowProc; wc.hInstance = hIns; wc.lpszMenuName = NULL; wc.cbClsExtra = wc.cbWndExtra = 0; wc.hbrBackground = ::GetSysColorBrush(COLOR_3DFACE); wc.hCursor = NULL; wc.hIcon = NULL; } if(!AfxRegisterClass(&wc)) { AfxThrowResourceException(); return FALSE; } return TRUE; } |
不清楚怎样注册窗口类的也不要紧,就是填充一个WNDCLASS的结构体而已,查一个MSDN就懂了。需要指出来说的就是wc.style的CS_GLOBALCLASS标志位,允许应用程序忽略掉CreateWindow、CreateWindowEx的实例句柄(hInstance), 那个hInstance可以和wc.hInstance不一样。但是我们在自己的程序中用,不用这个标志位也行的。
然后在CCustomTest的构造函数中调用这个函数,最后在主窗口类中关联一个这个类的成员变量就OK了!如果能够运行成功,就请继续往下看。
以后的操作,就和平时做界面的代码差不多了,只是灵活性大大提高了。从底层做起,你就可以为所欲为,不用去研究那些控件类的奇怪的封装了!
C瓜哥做了一个简单的效果,不断变换位置、字体大小和颜色的文字,背景也是透明的哦~感兴趣的,下载文后的源码
单击“单击我以开始”,弹出对话框
以后每500ms变换文字位置、大小和颜色
变化
当然,可以自定义自己的类,也可以用系统定义好的类,如图:
不过运行了一遍之后,在设计模式下面,就自动变成文本框、按钮了!









看来又是一个技术博客
以后多来学习了。嘿嘿。。
热烈欢迎技术博客的博主,我会经常回访的!
你现在在搞什么?是个什么项目还是自己弄着玩?
我没有项目,不过自己在学。以后会陆续写一些软件在u14soft.com上发布……
玩与工作不分家,因为我喜欢。
我喜欢的方向是VC++界面开发(很复杂的哦,比如QQ的界面就比较复杂)。不过VC++网络通信、VC++数据库编程也在学
这个还给老师了!悲剧啊!
你们老师还讲这个,已经很不错了!像我们老师都不讲的!我们老师很多都是搞web开发或者硬件开发,就是难得遇到一个搞软件,而且还是用VC++的!
又一款有用的东西,谢谢分享!
1、文后有源码
2、你的站点怎么是卖靴子的?而且还是英文的。真的卖,还是只是个停放着的域名?
最近忙啥呢?我这段忙于公务员考试所以没在网上了,现在回来了,哈~~~~
那感觉怎么样?上得了吗?你这么强悍,难道还进不了大公司?(是不是错过校园招聘了?)
这些东西不懂哦,学习了.
没有用过这类的技术
MFC一直都觉得是个好东西。
姐,你大学也是计院相关专业?
好东西,必须顶一下
!!!!
瓜哥就是瓜哥,好东西啊,可惜我不懂。。。
用这个就可以很简单地做自己DIY的控件啦
那我还是不会,慢慢来。。。
没有看到下载的地址呢?想研究一下
这个例子太小,所以没提供下载