MFC 自定义控件demo
时间: 2023-09-02 09:05:50 浏览: 142
好的,以下是一个简单的 MFC 自定义控件的 demo:
1. 首先创建一个 MFC 应用程序项目,命名为 CustomControlDemo。
2. 在项目中创建一个新的 C++ 类,命名为 CCustomControl,继承自 CWnd。
3. 在 CCustomControl.h 中添加以下代码:
```
#pragma once
class CCustomControl : public CWnd
{
public:
CCustomControl();
protected:
afx_msg void OnPaint();
DECLARE_MESSAGE_MAP()
};
```
4. 在 CCustomControl.cpp 中添加以下代码:
```
#include "stdafx.h"
#include "CustomControlDemo.h"
#include "CCustomControl.h"
CCustomControl::CCustomControl()
{
// 初始化代码
}
void CCustomControl::OnPaint()
{
CPaintDC dc(this); // device context for painting
// TODO: 在此处添加消息处理程序代码
// 不要在调用 CWnd::OnPaint() 之前绘制
// ...
// 结束绘制后,调用 CWnd::OnPaint()
CWnd::OnPaint();
}
BEGIN_MESSAGE_MAP(CCustomControl, CWnd)
ON_WM_PAINT()
END_MESSAGE_MAP()
```
5. 在 CMainFrame.h 中添加以下代码:
```
#pragma once
#include "CCustomControl.h"
class CMainFrame : public CFrameWnd
{
public:
CMainFrame();
protected:
CCustomControl m_customControl; // 自定义控件
DECLARE_MESSAGE_MAP()
};
```
6. 在 CMainFrame.cpp 中添加以下代码:
```
#include "stdafx.h"
#include "CustomControlDemo.h"
#include "CMainFrame.h"
CMainFrame::CMainFrame()
{
Create(NULL, _T("Custom Control Demo"), WS_OVERLAPPEDWINDOW, CRect(0, 0, 640, 480));
// 创建自定义控件
m_customControl.Create(NULL, NULL, WS_CHILD | WS_VISIBLE, CRect(50, 50, 200, 200), this, 1000);
}
BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd)
END_MESSAGE_MAP()
```
7. 现在编译并运行程序,你应该能够看到一个窗口和一个矩形自定义控件。
这只是一个简单的 demo,你可以根据自己的需求添加更多的代码来实现更复杂的自定义控件。
阅读全文