C++利用MFC画圆的完整代码
时间: 2023-07-10 08:03:54 浏览: 125
以下是利用 MFC 画圆的完整代码,其中包含了一个简单的 MFC 窗口和一个按钮,点击按钮即可在窗口中画圆:
```
// MyDialog.h 文件
#pragma once
class CMyDialog : public CDialogEx
{
public:
CMyDialog(CWnd* pParent = nullptr);
#ifdef AFX_DESIGN_TIME
enum { IDD = IDD_MYDIALOG };
#endif
protected:
virtual void DoDataExchange(CDataExchange* pDX);
DECLARE_MESSAGE_MAP()
private:
CButton m_btnDrawCircle;
public:
afx_msg void OnBnClickedDrawCircle();
};
// MyDialog.cpp 文件
#include "MyDialog.h"
#include "afxdialogex.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#endif
CMyDialog::CMyDialog(CWnd* pParent /*=nullptr*/)
: CDialogEx(IDD_MYDIALOG, pParent)
{
}
void CMyDialog::DoDataExchange(CDataExchange* pDX)
{
CDialogEx::DoDataExchange(pDX);
DDX_Control(pDX, IDC_DRAW_CIRCLE, m_btnDrawCircle);
}
BEGIN_MESSAGE_MAP(CMyDialog, CDialogEx)
ON_BN_CLICKED(IDC_DRAW_CIRCLE, &CMyDialog::OnBnClickedDrawCircle)
END_MESSAGE_MAP()
void CMyDialog::OnBnClickedDrawCircle()
{
CDC* pDC = GetDC();
int x = 100;
int y = 100;
int radius = 50;
pDC->Ellipse(x - radius, y - radius, x + radius, y + radius);
ReleaseDC(pDC);
}
// MyDialog.rc 文件
IDD_MYDIALOG DIALOGEX 0, 0, 200, 200
STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "My Dialog"
FONT 8, "MS Shell Dlg 2", 0, 0, 0x1
BEGIN
PUSHBUTTON "Draw Circle",IDC_DRAW_CIRCLE,70,20,60,14
END
// Resource.h 文件
//{{NO_DEPENDENCIES}}
// Microsoft Visual C++ 生成的包含文件。
// 供 MyDialog.rc 使用
//
#define IDD_MYDIALOG 129
#define IDC_DRAW_CIRCLE 1000
#ifndef IDC_STATIC
#define IDC_STATIC -1
#endif
// 新对象的下一组默认值
//
#ifdef APSTUDIO_INVOKED
#ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_NEXT_RESOURCE_VALUE 130
#define _APS_NEXT_COMMAND_VALUE 32771
#define _APS_NEXT_CONTROL_VALUE 1001
#define _APS_NEXT_SYMED_VALUE 110
#endif
#endif
```
在这个例子中,我们在对话框窗口中放置了一个按钮,当用户点击按钮时,`OnBnClickedDrawCircle` 函数将被调用。在该函数中,我们获取设备上下文(DC),并使用 `Ellipse` 函数绘制圆形。最后,我们释放设备上下文以避免内存泄漏。
注意,在 `MyDialog.cpp` 文件中,我们需要包含 `afxwin.h` 头文件以使用 MFC 中的函数。
阅读全文