MFC学习笔记(8)

添加设置对话框
1.插入对话框资源
2.创建一个对话框类
3.给编辑框关联一个UNIT型变量作为用户设定值
4.添加一个用来显示对话框的菜单项
5.给菜单项添加命令响应
6.在view中添加对话框头文件
7.构造一个对话框类对象然后调用对象的成员函数DoModal()显示对话框
8.通过DoModal的返回值判断用户选择
9.注意对话框对象的生命周期导致的设置无法保存问题

Radio控件
通过在第一个radio控件的属性设为group讲之后的若干控件设为一组
第一个控件关联的变量就会代表着一组radio中的选择

创建颜色对话框
CColorDialog dlg;
dlg.DoModal();

dlg.m_cc.rgbResult保存了用户选择的颜色

创建字体对话框
CFontDialog dlg;
if (dlg.DoModal() == IDOK)
{
   // Create the font using the selected font from CFontDialog.
   LOGFONT lf;
   memcpy(&lf, dlg.m_cf.lpLogFont, sizeof(LOGFONT));

   CFont font;
   VERIFY(font.CreateFontIndirect(&lf));

   // Do something with the font just created...
   CClientDC dc(this);
   CFont* def_font = dc.SelectObject(&font);
   dc.TextOut(5, 5, _T("Hello"), 5);
   dc.SelectObject(def_font);

   // Done with the font. Delete the font object.
   font.DeleteObject();
}


dlg.m_cf.lpLogFont.lfFaceName存储了字体的名字


画图实例功能
捕获用户改变设置的时候的消息
给每个控件添加EN_CHANGE响应函数
给每个函数中调用Invalidate();
在对话框类中增加WM_PAINT响应函数  在其中画图
注意屏幕坐标与程序坐标的转换
ScreenToClient(rect);

*当一个控件和一个变量关联的时候,如果想让数据交换,需要调用
UpdateData();

改变对话框控件背景颜色及文字颜色
在对话框类中增加WM_CTLCOLOR响应函数
在对话框类中创建一个画刷  在WM_CTLCOLOR响应函数中返回

//在响应函数中对某个控件的背景色进行控制
if(pWnd->GetDlgCtrlID()==IDC_LINE_STYLE)
{
 pDC->SetTextColor(RGB(255,0,0));//设置文字颜色
 pDC->SetBkMode(TRANSPARENT);//设置透明背景
 return m_brush;
}

改变按钮的颜色需要  重写CButton类中的DrawItem函数
并将按钮与新建的CButton类的对象关联

在窗口中贴图
1.创建位图
CBitmap bitmap;
bitmap.LoadBitmap(IDB_BITMAP1);
2.创建兼容DC
CDC dcCompatible;
dcCompatible.CreateCompatibleDC(pDC);
3.将位图选到兼容DC中
dcCompatible.SelectObject(&bitmap);
4.将兼容DC中的位图贴到当前DC中
pDC->BitBlt(rect.left,rect.top,rect.Width(),rect.Height(),&dcCompatible,0,0,SRCCOPY);

BitBlt按照1:1拷贝  无法使位图自动随窗口大小伸缩
StretchBlt解决这个问题后者仅比前者多了2个参数

在OnDraw中做贴图闪烁比较大   而在OnEraseBkgnd中闪烁较小

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值