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