其他分享
首页 > 其他分享> > wtl11种技巧

wtl11种技巧

作者:互联网

原链接

1.设置生成窗口大小

RECT rc = {0, 0, 380, 265};
if(wndMain.CreateEx(NULL, rc) == NULL)
//Run里面

2.中央显示主窗口

ShowWindow()命令前加一句:
wndMain.CenterWindow();//桌面正中.

3.设置最小/最大尺寸

MESSAGE_HANDLER(WM_GETMINMAXINFO, OnGetMinMaxInfo)//消息.取最小最大信息.
LRESULT OnGetMinMaxInfo(UINT, WPARAM, LPARAM lParam, BOOL&)
{
 // lParam传递MINMAXINFO结构的指针
LPMINMAXINFO lpMMI = (LPMINMAXINFO)lParam;

//改变size结构中的相应的值为我们想要的窗口大小值
lpMMI->ptMinTrackSize.x = 200; // 最小宽度
lpMMI->ptMinTrackSize.y = 150; // 最小高度
lpMMI->ptMaxTrackSize.x = 600; // 最大宽度
lpMMI->ptMaxTrackSize.y = 450; // 最大高度

return 0; 
}

4.动态设置标题

#include "atlmisc.h"
//下面加入OnCreate()函数中
CString str;
str.LoadString(IDS_EDITSTRING);
SetWindowText(str);//动态设置标题.

5.平面风格工具栏

wtl向导中,无rebar时,默认为标准立体按钮.但可修改为:

CToolBarCtrl tool = m_hWndToolBar;
tool.ModifyStyle(0, TBSTYLE_FLAT);//工具栏控件
//修改风格

对话框技巧

6.对话框文字和背景颜色

SetTextColor设置文字颜色.先加消息映射:

MESSAGE_HANDLER(WM_CTLCOLORDLG, OnCtrlColor)
MESSAGE_HANDLER(WM_CTLCOLORSTATIC, OnCtrlColor)

OnCtrlColor函数中改变文字和背景色.将背景模式设置为透明,可正确显示静态控件组控件,然后设置文字颜色,再设置背景刷.加上atlmisc.h头文件,有AtlGetStockBrush(),有WHITE_BRUSH,?LTGRAY_BRUSH,GRAY_BRUSH,DKGRAY_BRUSH,和BLACK_BRUSH,用其它颜色,你要生成新刷.

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

7.动态交换按钮位置

关键,是如何转换屏幕位置为相对客户位置.

CButton bOk = GetDlgItem(IDOK));
CButton bCancel = GetDlgItem(IDCANCEL));
//取得按钮位置
RECT rcOk, rcCancel;
bOk.GetWindowRect(&rcOk);
ScreenToClient(&rcOk);
bCancel.GetWindowRect(&rcCancel);
ScreenToClient(&rcCancel);
// 交换按钮位置
bOk.SetWindowPos(NULL, &rcCancel, SWP_NOZORDER | SWP_NOSIZE);
bCancel.SetWindowPos(NULL, &rcOk, SWP_NOZORDER | SWP_NOSIZE);

控件技巧

8.平面风格ListView

先取控件,再改风格.

CHeaderCtrl hdr = MyListView.GetHeader();
hdr.ModifyStyle(HDS_BUTTONS, 0);

9.显示整数

int nValue = 9999;
CString sInteger;
sInteger.Format("%i", nValue);
MyControl.SetWindowText(sInteger);//置文本

10.显示资源字符串

AtlLoadString可加载长度超过255串,然后显示.示.要用\r\n来分行.

TCHAR cArray[1000];
AtlLoadString(IDS_EDITSTRING, cArray, 1000 + 1);
MyControl.SetWindowText(cArray);

11.缺省字体

放置控件在对话框上时,控件采用对话框默认字体.然而,当按视图或者分割面板实现时,将用系统字体但不好看.调用AtlGetStockFont取得truetype字体DEFAULT_GUI_FONT,设置控件为这种字体:

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

标签:设置,控件,技巧,对话框,wtl11,BRUSH,lpMMI,OnCtrlColor
来源: https://blog.csdn.net/fqbqrr/article/details/117392175