MFC自定义控件
来源:互联网 发布:怎么网络推广 编辑:程序博客网 时间:2024/04/30 15:59
需要在MFC实现自定义控件功能,网上搜集找的如下方法实现:
以下是步骤说明。
一、自定义一个空白控件
1、先创建一个MFC工程
NEW Project-->MFC-->MFC Application-->name: “CustomCtr”-->Application Type选择“Dialog based”。
2、在窗口中添加一个自定义控件
Toolbox-->“Custom Control”-->属性-->class随便填写一个控件类名“CMyWin”, 这个名字用于以后注册控件用的,注册函数为RegisterWindowClass()。
3、创建一个类
在窗口中,右击custom control 控件-->ClassWizard-->ClassWizard-->Add Class-->类名CMyTest(以C开头)-->Base class:CWnd。
4、注册自定义控件MyWin
在MyTest类.h文件中声明注册函数BOOL RegisterWindowClass(HINSTANCE hInstance = NULL)。
BOOL CMyTest::RegisterWindowClass(HINSTANCE hInstance) { LPCWSTR className = L"CMyWin";//"CMyWin"控件类的名字 WNDCLASS windowclass; if(hInstance) hInstance = AfxGetInstanceHandle(); if (!(::GetClassInfo(hInstance, className, &windowclass))) { windowclass.style = CS_DBLCLKS; windowclass.lpfnWndProc = ::DefWindowProc; windowclass.cbClsExtra = windowclass.cbWndExtra = 0; windowclass.hInstance = hInstance; windowclass.hIcon = NULL; windowclass.hCursor = AfxGetApp()->LoadStandardCursor(IDC_ARROW); windowclass.hbrBackground=::GetSysColorBrush(COLOR_WINDOW); windowclass.lpszMenuName = NULL; windowclass.lpszClassName = className; if (!AfxRegisterClass(&windowclass)) { AfxThrowResourceException(); return FALSE; } } return TRUE; }
5、在MyTest类的构造器中调用 RegisterWindowClass()。
CMyTest::CMyTest() { RegisterWindowClass(); }
6、控件与对话框数据交换
在CustomCtrDlg.h中定义一个变量:
CMyTest m_draw;
在对话框类的CustomCtrDlg.cpp的DoDataExchange函数中添加DDX_Control(pDX,IDC_CUSTOM1,m_draw)。
void CCustomCtrDlg::DoDataExchange(CDataExchange* pDX) { CDialogEx::DoDataExchange(pDX); DDX_Control(pDX,IDC_CUSTOM1,m_draw); }
以上是自定义一个空白控件。
二、在控件上绘图
1、在CMyTest类中添加一个绘图消息
在VS2010最左侧Class View中右击CMyTest类-->ClassWizard-->Messages-->WM_PAINT-->双击,开发环境自动添加OnPaint()函数及消息队列。
2、编写OnPaint()函数
例如:画一条直线
void CMykk::OnPaint() { CPaintDC dc(this); // device context for painting // TODO: Add your message handler code here // Do not call CWnd::OnPaint() for painting messages CRect rect; this->GetClientRect(rect); dc.MoveTo(0,0); dc.LineTo(rect.right,rect.bottom); }
- MFC自定义控件
- MFC自定义控件
- MFC自定义控件
- MFC工具栏添加自定义控件
- MFC 自定义控件使用实践
- mfc自定义控件的编程
- MFC控件的自定义绘制
- 自定义MFC的文件夹浏览控件类
- hello world 级别 MFC自定义控件
- 在MFC中集成自定义.NET控件
- MFC 自定义数字控件 (继承自CEdit)
- MFC ActiveX控件:添加自定义方法
- MFC 自定义控件 ID与信息绑定
- MFC制作自定义控件(VS2010)
- MFC 自定义控件使用实践(1)
- VC MFC(Custom Control)自定义控件
- VC MFC(Custom Control)自定义控件
- MFC自定义类访问主窗口控件
- Caused by: org.yaml.snakeyaml.scanner.ScannerException: while scanning for the next token found char
- Use powershell config network
- SQLyog 激活 注册码
- ORCLE 查询一段时间(时间点不定,时差确定)内符合一定条件的数据
- Spring:IOC—控制反转(3)
- MFC自定义控件
- 解决:ERROR: Exception when publishing, exception message [Exec exit status not zero. Status [-1]]
- 卷积神经网络CNN知识点
- 解决solr4.10.3在solrhome下添加多个solrcore遇到的问题总结
- XML学习---利用Java对XML文档的增、删、改、查
- Android.mk介绍(一)
- select onChange事件
- 你值得了解的 10 个有趣的 Linux 命令行小技巧
- detected problems with app native libraries(please consult log for detail):