C++自定义控件
- 新建MFC应用程序,把Custom Control 控件拖拽到窗体上。
- 右键控件,创建MyCustomControl类,继承CWnd,是一个窗口类
- 注册窗口,在MyCustomControl.h中 做如下声明:
public: BOOL RegisterWndClass();
- 在MyCustomControl.cpp中实现这个函数
BOOL MyCustomControl::RegisterWndClass() { WNDCLASS windowclass; HINSTANCE hInst = AfxGetInstanceHandle(); if(!(::GetClassInfo(hInst,MYWNDCLASS,&windowclass))) { windowclass.style = CS_DBLCLKS; windowclass.lpfnWndProc = ::DefWindowProc; windowclass.cbClsExtra = windowclass.cbWndExtra = 0; windowclass.hInstance =hInst; windowclass.hIcon = NULL; windowclass.hCursor = AfxGetApp()->LoadStandardCursor(IDC_ARROW); windowclass.hbrBackground = ::GetSysColorBrush(COLOR_WINDOW); windowclass.lpszMenuName = NULL; windowclass.lpszClassName = MYWNDCLASS; if(!AfxRegisterClass(&windowclass)) { AfxThrowResourceException(); return FALSE; } } return TRUE; }
- 在MyCustomControl构造函数中调用RegisterWndClass来注册窗口
MyCustomControl::MyCustomControl() { //Register My window class RegisterWndClass(); }
- 将控件类名改为MyDrawPad,将RegisterWndClass()函数中把MYWNDCLASS换成"MyDrawPad"。至此自定义的窗口类MyCustomControl 和custom control 控件关联上了。
- 接下来就是关于自定义控件和应用程序之间的数据交换和通信的问题。资源视图中右键custom control 选择添加变量,变量类型为 MyCustomControl , Value类型为control ,变量名m_drawpad,然后点击ok 创建完成
总结:
- 关联自定义控件类
- 关联应用程序