WTL编程小技巧汇编

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);
上一篇:Java 内存模型、GC原理及算法


下一篇:河北省重大技术需求征集系统原型(MVC框架业务流程简介)