1、设置窗体生成大小并中央显示窗口

2、设置窗体最大/小尺寸

3、动态设置窗体标题

4、设置对话框的字体和背景颜色

5、设置窗体控件默认字体

以下技巧可应用于SDI和MDI程序:

1、设置窗体生成大小并中央显示窗口

  在全局函数Run中创建了CMainFrame,修改创建的语句就可以指定窗口的初始大小。在这个函数中,在ShowWindow()之前调用CenterWindow()可以将主窗口在屏幕中央显示,参见代码:

int Run(LPTSTR /*lpstrCmdLine*/ = NULL, int nCmdShow = SW_SHOWDEFAULT)
{
... ... RECT rc = {, , , }; // 设置窗口的初始位置(0,0)、大小(300,600)
if(wndMain.CreateEx(NULL, rc) == NULL)
{
ATLTRACE(_T("Main window creation failed!\n"));
return ;
}
  wndMain.CenterWindow();       // 居中显示窗口
  wndMain.ShowWindow(nCmdShow);
... ...
return nRet;
}

 2、设置窗体最大/小尺寸

  在CMainFrame中有一个消息叫做WM_GETMINMAXINFO负责控制窗体最大/小尺寸的,实现这个消息的响应函数就行了:

BEGIN_MSG_MAP(CMainFrame)
... ...
MESSAGE_HANDLER(WM_GETMINMAXINFO, OnGetMinMaxInfo)
END_MSG_MAP() ... ... LRESULT CMainFrame::OnGetMinMaxInfo(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM lParam, BOOL& /*bHandled*/)
{
// TODO: 这里设置窗体的最大/小属性
LPMINMAXINFO lpInfor = (LPMINMAXINFO)lParam;
lpInfor->ptMinTrackSize.x = ;
lpInfor->ptMinTrackSize.y = ;
lpInfor->ptMaxTrackSize.x = ;
lpInfor->ptMaxTrackSize.y = ; return ;
}

 3、动态设置窗体标题

  可以通过加载系统资源中的字符串,并把字符串作为窗体标题显示出来。要用到CString需加载头文件<atlmisc.h>,在CMainFrame::OnCreate函数中可以设置窗体标题:

CString strInfor;
strInfor.LoadString(IDS_EDITSTRING);
SetWindowText(strInfor);

4、设置对话框的字体和背景颜色

  比如说设置“关于”对话框的字体和背景色,可以设置两个消息的映射:WM_CTLCOLORDLG 和 WM_CTLCOLORSTATIC。在消息响应函数中可以设置字体颜色和背景色:

MESSAGE_HANDLER(WM_CTLCOLORDLG, OnCtrlColor)
MESSAGE_HANDLER(WM_CTLCOLORSTATIC, OnCtrlColor) ... ... LRESULT OnCtrlColor(UINT, WPARAM, LPARAM, BOOL&) 
{
// 设置背景模式和文字颜色 
    SetBkMode((HDC)wParam, TRANSPARENT);      // 透明背景
SetTextColor((HDC)wParam, RGB(, , )); // 白色文字  
    return (LRESULT)AtlGetStockBrush(BLACK_BRUSH); 
}

 5、设置窗体控件默认字体

  当一个控件被放置在对话框上时,控件就采用对话框的缺省字体。然而,当一个控件如视图或者分割面板被使用在窗口中时,将使用SYSTEM_FONT字体,这种字体不是很漂亮。要改变字体的话,只要在工程中增加atlmisc.h文件,然后调用AtlGetStockFont取得truetype字体DEFAULT_GUI_FONT,将控件设置成这种字体:

MyControl.SetFont(AtlGetStockFont(DEFAULT_GUI_FONT), TRUE);

最新文章

  1. View and Data API 现在支持IE11了
  2. Office word 2013中直接调用MathType的方法
  3. 认识ATL窗口
  4. hdu 4046 2011北京赛区网络赛G 线段树 ***
  5. spring 架构学习
  6. redis:hash 数据类型
  7. [BZOJ 3143][HNOI2013]游走(数学期望)
  8. HDU 1869 六度分离【floyd】
  9. 数据库MySQL常用命令复习
  10. NOIP2015 子串 (DP+优化)
  11. js学习--浏览器对象计时器setInterval()与setTimeout()的使用与区别
  12. Paros抓包工具
  13. Java中进制的转换函数
  14. 【easy】112.path sum 113.-----------------
  15. MyBatis源码解析(六)——DataSource数据源模块之池型数据源
  16. Win10电脑系统使用技巧
  17. 用VerilogHDL设计一个与门逻辑,并进行前仿和后仿
  18. SSH公钥登录原理
  19. jmap 命令
  20. Lintcode: Find Peak Element

热门文章

  1. LCT专题练习
  2. Apriori原理与实践
  3. 【安全测试】 WebScarab安装方法
  4. java程序
  5. linux下使用shell查看apache IP访问量
  6. ECSHOP 优化 ecshop错误转向地址更改
  7. android 分享或者调用系统或者其他app时 应注意! startActivityForResult() 使用
  8. IP地址的分类——a,b,c 类是如何划分的
  9. 2-legged oauth &amp; 3-legged oauth
  10. 关于KNN的python3实现