您的位置:首页 > 编程语言

WTL编程小技巧汇编

2016-05-03 17:13 330 查看
1、设置窗体生成大小并中央显示窗口

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

[b][b]3、动态设置窗体标题[/b][/b]

[b][b][b]4、设置对话框的字体和背景颜色[/b][/b][/b]

[b][b][b][b]5、设置窗体控件默认字体[/b][/b][/b][/b]

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

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

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

int Run(LPTSTR /*lpstrCmdLine*/ = NULL, int nCmdShow = SW_SHOWDEFAULT)
{
... ...

RECT rc = {0, 0, 300, 600};        // 设置窗口的初始位置(0,0)、大小(300,600)
if(wndMain.CreateEx(NULL, rc) == NULL)
{
ATLTRACE(_T("Main window creation failed!\n"));
return 0;
}
  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 = 200;
lpInfor->ptMinTrackSize.y = 400;
lpInfor->ptMaxTrackSize.x = 800;
lpInfor->ptMaxTrackSize.y = 600;

return 0;
}


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(255, 255, 255));  // 白色文字
return (LRESULT)AtlGetStockBrush(BLACK_BRUSH);
}


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

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

MyControl.SetFont(AtlGetStockFont(DEFAULT_GUI_FONT), TRUE);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: