WTL编程小技巧汇编
以下技巧可应用于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);
WTL编程小技巧汇编的更多相关文章
- Java编程小技巧(1)——方法传回两个对象
原文地址:Java编程小技巧(1)--方法传回两个对象 | Stars-One的杂货小窝 题目是个伪命题,由Java语法我们都知道,方法要么返回一个对象,要么就不返回 当有这样的情况,我们需要返回两个 ...
- Shellcode编程小技巧
工作需要,需要注入其他程序监控一些东西,检测到的数据通过WM_COPY 消息发送给显示窗体.(大体是这样的还没定稿) ##1 选择一个框架 ## tombkeeper/Shellcode_Templa ...
- 学会这些 pycharm 编程小技巧,编程效率提升 10 倍
PyCharm 是一款非常强大的编写 python 代码的工具.掌握一些小技巧能成倍的提升写代码的效率,本篇介绍几个经常使用的小技巧. 一.分屏展示 当你想同时看到多个文件的时候: 1.右击标签页: ...
- hadoop编程小技巧(5)---自定义输入文件格式类InputFormat
Hadoop代码测试环境:Hadoop2.4 应用:在对数据需要进行一定条件的过滤和简单处理的时候可以使用自定义输入文件格式类. Hadoop内置的输入文件格式类有: 1)FileInputForma ...
- hadoop编程小技巧(5)---自己定义输入文件格式类InputFormat
Hadoop代码測试环境:Hadoop2.4 应用:在对数据须要进行一定条件的过滤和简单处理的时候能够使用自己定义输入文件格式类. Hadoop内置的输入文件格式类有: 1)FileInputForm ...
- 编程小技巧之 Linux 文本处理命令
合格的程序员都善于使用工具,正所谓君子性非异也,善假于物也.合理的利用 Linux 的命令行工具,可以提高我们的工作效率. 本文简单的介绍三个能使用 Linux 文本处理命令的场景,给大家开阔一下思路 ...
- VC编程小技巧之框架窗口及其他
1.修改主窗口风格 AppWizard生成的应用程序框架的主窗口具有缺省的窗口风格,比如在窗口标题条中自动添加文档名.窗口是叠加型的.可改变窗口大小等.要修改窗口的缺省风格,需要重载CWnd::Pre ...
- Javascript 编程小技巧总结(部分内容借鉴他人)
1 – 使用===,而不是== ==(或!=)操作符在需要的时候会自动执行类型转换.===(或!==)操作不会执行任何转换.它将比较值和类型,而且在速度上也被认为优于==. 2 – 使用闭包实现私有变 ...
- 积累的VC编程小技巧之框架窗口及其他
1.修改主窗口风格 AppWizard生成的应用程序框架的主窗口具有缺省的窗口风格,比如在窗口标题条中自动添加文档名.窗口是叠加型的.可改变窗口大小等.要修改窗口的缺省风格,需要重载CWnd::Pre ...
随机推荐
- 解决WCF的service端无法使用泛型的问题
思路是将其序列化(比较笨的方法……) 1.引入Newtonsoft.json.dll 2.服务端序列化:return JsonConvert.SerializeObject(result); 3.客户 ...
- IE下a标签跳转失败
最近又发现了一个IE和其他浏览器的不同点,IE中,<a></a>中无内容时,无法点击跳转,真是虐死我了,没想到下面这样写也会有兼容性,看来我要学的真的很多. <div i ...
- java的concurrent用法详解
我们都知道,在JDK1.5之前,Java中要进行业务并发时,通常需要有程序员独立完成代码实现,当然也有一些开源的框架提供了这些功能,但是这些依然没有JDK自带的功能使用起来方便.而当针对高质量Java ...
- javascript new
1. 仅function可以使用new 2. function使用new时,会拷贝function中this的内容给新对象,并将function的prototype指向新对象(如果该function没 ...
- Windows Store App 近期访问列表
Windows 8系统在管理用户的文件时,会将用户近期访问的文件添加到对应应用的近期访问列表中,所有的Windows应用商店应用都有各自的近期访问列表,根据文件的上一次访问时间,可以在列表中对文件进行 ...
- [强连通分量] POJ 2186 Popular Cows
Popular Cows Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 31815 Accepted: 12927 De ...
- nodejs gulp less编辑
nodejs 下载地址:http://pan.baidu.com/s/1bnz2oPp 提取密码:0mip 1.最简单的编译less 在安装好nodejs后,cmd 进入控制台 安装 lessc : ...
- windows下python安装pyquery
安装pyquery之前首先要明确一点,easyinstall 是一款python包管理器,类似于node的npm,用于安装python的扩展包,它安装的包是以*.egg的方式. 要安装pq需要经历以下 ...
- 第1章 Express MongoDB 搭建多人博客
学习环境 Node.js : 0.10.22 + Express : 3.4.4 + MongoDB : 2.4.8 + 快速开始 安装 Express express 是 Node.js 上最流行的 ...
- mysql触发器使用
触发器 简要 1.触发器基本概念 2.触发器语法及实战例子 3.before和after区别 一.触发器基本概念 1.一触即发 2.作用: 监视某种情况并触发某种操作 3.观察场景 一个电子商城: 商 ...