获取对话框当前cfont_获取对话框当前cfont_MFC设置对话框、字体对话框、颜色对话框(转)...

一、绘图

新建一个工程Graphic。添加一个菜单“绘图”,在这个菜单中添加四个菜单项,分别为点(IDM_DOT)、直线(IDM_LINE)、矩形(IDM_RECTANGLE)和椭圆(IDM_ELLIPSE)。分别为这四个菜单项添加命令响应。在每个命令响应函数中保存用户的选择,定义成员变量UINT

m_nDrawType

private保存用户的选择。在CGraphicView的构造方法中初始化m_nDrawType=0。在OnDot、OnLine、OnRectangle和OnEllipse响应函数中分别设置这个成员变量的值为1、2、3、4。分别捕获鼠标左键按下和松开的消息WM_LBUTTONDOWN和WM_LBUTTONUP。在WM_LBUTTONDOWN中将鼠标按下的这个点保存,在View类中添加成员变量CPoint

m_ptOrgin

private,在构造函数中初始化为0。在OnButtonDownh函数总保存这个点到成员变量中m_ptOrigin=point。

鼠标松开的响应函数ONBUTTONUP中代码如下:

CClientDC dc(this);

CPen pen(PS_SOLID,1,RGB(255,0,0));

dc.SelectObject(&pen);

CBrush

*pBrush=CBrush::FromHandle((HBRUSH)GetStockObject(NULL_BRUSH));

dc.SelectObject(pBrush);

switch(m_nDrawType)

{

case 1:

dc.SetPixel(point,RGB(255,0,0));

break;

case 2:

dc.MoveTo(m_ptOrigin);

dc.LineTo(point);

break;

case 3:

dc.Rectangle(CRect(m_ptOrigin,point));

break;

case 4:

dc.Ellipse(CRect(m_ptOrigin,point));

break;

}

75548

二、设置对话框

1、设置线宽

插入一个对话框:IDI_DLG_SETTING

setting。在对话框上添加一个静态文本框:线宽,一个编辑框:IDC_LINE_WIDTH。双击对话框创建一个对话框的类:CSettingDlg。点右键给编辑框控件关联成员变量:m_nLineWidth

UINT。增加设置菜单项:IDM_SETTING 设置,给菜单项添加命令响应OnSetting,选择view类。

响应函数中的代码如下:

CSettingDlg dlg;

dlg.DoModal();

在view类中增加保存对话框中设置的线宽的成员变量:UINT m_nLineWidth

private。在构造函数中初始化为0。

设置菜单项响应函数OnSetting的代码修改如下:

CSettingDlg dlg;

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
对于C++基于MFC设置对话框、所有控件和字体自适应放缩程序,可以采用以下步骤: 1. 在对话框类的头文件中添加如下成员变量: ```cpp CRect m_rectDlg; // 对话框矩形区域 CFont m_font; // 字体 ``` 2. 在OnInitDialog函数中初始化成员变量: ```cpp BOOL CMyDialog::OnInitDialog() { CDialogEx::OnInitDialog(); // 获取对话框矩形区域 GetClientRect(m_rectDlg); // 获取字体 LOGFONT lf; GetFont()->GetLogFont(&lf); m_font.CreateFontIndirect(&lf); // 设置所有控件自适应放缩 ModifyStyleEx(0, WS_EX_CONTROLPARENT); return TRUE; } ``` 3. 在OnSize函数中实现对所有控件的自适应放缩: ```cpp void CMyDialog::OnSize(UINT nType, int cx, int cy) { CDialogEx::OnSize(nType, cx, cy); // 获取当前对话框矩形区域 CRect rect; GetClientRect(rect); // 计算放缩比例 float fRateX = (float)rect.Width() / (float)m_rectDlg.Width(); float fRateY = (float)rect.Height() / (float)m_rectDlg.Height(); // 放缩字体 LOGFONT lf; m_font.GetLogFont(&lf); lf.lfHeight = (LONG)(lf.lfHeight * fRateY); m_font.Detach(); m_font.CreateFontIndirect(&lf); SetFont(&m_font); // 放缩控件 CWnd* pChild = GetWindow(GW_CHILD); while (pChild) { CRect rectChild; pChild->GetWindowRect(rectChild); ScreenToClient(rectChild); rectChild.left = (int)(rectChild.left * fRateX); rectChild.right = (int)(rectChild.right * fRateX); rectChild.top = (int)(rectChild.top * fRateY); rectChild.bottom = (int)(rectChild.bottom * fRateY); pChild->MoveWindow(rectChild); pChild = pChild->GetNextWindow(); } // 更新对话框矩形区域 m_rectDlg = rect; } ``` 通过以上步骤,即可实现C++基于MFC设置对话框、所有控件和字体自适应放缩程序。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值