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};        // 设置窗口的初始位置(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(255255255));  // 白色文字  
    return (LRESULT)AtlGetStockBrush(BLACK_BRUSH); 
}

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

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

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

转载于:https://www.cnblogs.com/kuliuheng/p/5455726.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值