VC通用控件自适应屏幕类
此为我程序中的一个类,本用于WinCE,但在桌面系统上也同样适用!
使用方法(在WM_INITDIALOG或WM_CREATE消息中加入):
手动调整控件位置:
CWindowAnchor::AddControl(hwnd,IDC_STATIC1,&WindowAnchorInfo(WAT_LEFT|WAT_TOP|WAT_RIGHT,2,20,4,10));
CWindowAnchor::AddControl(hwnd,IDC_STATIC1,&WindowAnchorInfo(WAT_LEFT|WAT_TOP,2,8,40,10));
自动调整控件位置(跟据设计时资源文件中控件的大小及位置):
CWindowAnchor::AddControl(hwnd,IDC_STATIC1,&WindowAnchorInfo(WAT_LEFT|WAT_TOP|WAT_RIGHT));
响应WM_SIZE消息:
return HANDLE_WM_SIZE(hwndDlg,wParam,lParam,CWindowAnchor::OnSize);
响应WM_DESTROY消息:
代码:
#include <map>
#if defined (_MSC_VER)
#pragma warning(disable: 4786)
#endif
/*用于WindowAnchorInfo结构的停靠类型*/
typedef enum WindowAnchorType
{
WAT_TOP=0x0001,
WAT_LEFT=0x0002,
WAT_RIGHT=0x0004,
WAT_BOTTOM=0x0008
};
/*控件定位描述信息*/
typedef struct WindowAnchorInfo{
DWORD dwAnchor; //WAT_*
RECT rcOriginalRect; //控件的原始边距,如果为空则自动获取(仅适用于WM_INIT中)
WindowAnchorInfo(DWORD pAnchor=WAT_TOP|WAT_LEFT,LONG pLeft=0,LONG pTop=0,LONG pRight=0,LONG pBottom=0)
{
dwAnchor=pAnchor;
rcOriginalRect.left=pLeft;
rcOriginalRect.top=pTop;
rcOriginalRect.right=pRight;
rcOriginalRect.bottom=pBottom;
};
};
typedef std::map<HWND,WindowAnchorInfo> ControlHashtable;
typedef struct{
INT nWidth; //对话框宽度
INT nHeight; //对话框高度
INT nMinHeight; //对话框最小高度
ControlHashtable mapControls; //对话框所有子控件
}WindowAnchorDialog;
/*
* 对话框子控件定位
* 2009.03.29 By Frank
*/
static class CWindowAnchor
{
private:
static BOOL _ReSize(HWND hwndDlg, const WindowAnchorDialog *wad, HWND hwndCtrl, const WindowAnchorInfo *wai);
public:
/*
* 开始调整(此调用中会获取当前对话框的大小,如果在设计后要调整对话框大小,请先调用此方法)
* hwndDlg:对话框句柄
*/
static BOOL BeginControlBound(HWND hwndDlg);
/*
* 结束调整
* hwndDlg:对话框句柄
*/
static BOOL EndControlBound(HWND hwndDlg);
/*
* 添加一个控件到调整列表
* hWndInsertAfter:HWND_BOTTOM |HWND_NOTOPMOST | HWND_TOP | HWND_TOPMOST |-2不改变 | Is Hwnd
*/
static BOOL AddControl(HWND hwndDlg, INT nCtrlID, WindowAnchorInfo *wai, HWND hWndInsertAfter=(HWND)-2);
/*
* 调整一个指定控件的大小
*/
static BOOL ReSize(HWND hwndDlg, HWND hwndCtrl);
/*
* 响应WM_SIZE消息
*/
static BOOL OnSize(HWND hwndDlg, UINT state, int cx, int cy);
/*相应WM_VSCROLL消息*/
static BOOL OnVScroll(HWND hwnd, HWND hwndCtl, UINT code, int pos);
};
下载地址:单击下载
VC通用控件自适应屏幕类相关推荐
- 【免杀前置课——Windows编程】五、窗口控件——什么是控件、Windolws 窗口两大类、Windows标准控件/通用控件、控件响应的接收、创建窗口制作不同控件
窗口控件 WINDOW控件 什么是控件? 控件是常见的窗口上的交互元素.例如:一个按钮,一个复选框,一个列表框等.当控件的特定功能被触发后,会主动发送消息通知父窗口,父窗口可以通过发送消息给控件控制控 ...
- vc picture控件的分类总结(转载)
VC PICTURE控件的使用,如何加载背景图片 vc picture控件的分类总结: (一) 非动态显示图片(即图片先通过资源管理器载入,有一个固定ID) (二) 动态载入图片(即只需要在程序中指定 ...
- vc picture控件载入背景图,随控件大小改变
在mfc里,想要在Picture控件中载入一张图片有两种方法:静态的和动态的.静态的方法就是图片先载入资源(.rc)文件中,拥有一个唯一的ID:动态的方法就是制定图片的路径名即可. 当然这样的方法网上 ...
- VC++ OCX 控件注册
转自:http://www.cctry.com/thread-5334-1-1.html 方法一:在dos或Windows命令行下运行:regsvr32 ocxname.ocx 注册 示例: regs ...
- java组件自适应窗口大小_java swing 窗口和控件自适应大小
本文记录java开发CS结构时怎么自适应屏幕大小以及控件跟随frame大小变化大小.位置和字体大小 需要注意: 1.代码必须放置在其构造方法中.如:我的frame1是我frame.java的名,则代码 ...
- MFC—界面设计(控件自适应,添加背景图,Static背景颜色设置)
1.控件随着窗口自适应 首先在类视图里面添加OnSize()函数,然后添加一个ChangeSize()函数,头文件中添加如下 //控件自适应变量POINT old;CRect m_rect;void ...
- VC++----ListBox控件的使用
VC++----ListBox控件的使用_哈客部落 - 站长网部落 hake.cc 哈客站长网打造站长最好的部落 http://www.hake.cc/a/biancheng/ruanjian/vs/ ...
- 背水一战 Windows 10 (40) - 控件(导航类): AppBar, CommandBar
原文:背水一战 Windows 10 (40) - 控件(导航类): AppBar, CommandBar [源码下载] 背水一战 Windows 10 (40) - 控件(导航类): AppBar, ...
- c语言 listview,C语言 SDK编程之通用控件的使用--ListView
一.ListView控件属于通用控件CONTROL中的一种,在SDK编程方式时要使用通用控件 必须包含comctl32.dll,所以代码中要有头文件: commctrl.h 导入库:comctl ...
- 背水一战 Windows 10 (61) - 控件(媒体类): InkCanvas 涂鸦编辑
背水一战 Windows 10 (61) - 控件(媒体类): InkCanvas 涂鸦编辑 原文:背水一战 Windows 10 (61) - 控件(媒体类): InkCanvas 涂鸦编辑 [源码 ...
最新文章
- PHP判断ajax请求:HTTP_X_REQUESTED_WITH
- Netty 4.1 Getting Start (翻译) + Demo
- 【Linux 内核 内存管理】RCU 机制 ④ ( RCU 模式下更新链表项 list_replace_rcu 函数 | 链表操作时使用 smp_wmb() 函数保证代码执行顺序 )
- 区块链实现代码详细分析(Python)
- uc3842改可调电源教程_明纬开关电源改可调详细教程
- 开源创新的理念_开源如何解决创新问题
- 无线设置 用户_【HIT每日学14】医院无线网络安全管理办法
- Json与List的相互转换 [谷歌的Gson.jar和阿里的fastJson.jar]
- FIND、FINDINDEX、INDEXOF、LASTINDEX、INCLUDES 数组五种查询条件方法介绍
- Java垃圾回收(GC)机制
- Win10下载的文件如何解除锁定?Win10系统解除锁定下载的文件方法
- 【gp数据库】十条实用数据库SQL优化建议
- 融合零样本学习和小样本学习的弱监督学习方法综述
- syntactic 与semantic 的区别
- 技术面试时该反问面试官什么问题?
- 使用计算机用眼卫生,电脑族日常保护眼睛小常识
- 计算机科学技术的广告语,让人动心的十大经典IT广告语
- MFC从字体名获取字库文件路径(从宋体获取到simsun.ttc)
- Android 手机红外遥控器实现
- WMI_04_常见的WMI类的属性
热门文章
- 2019基金行业变革之年
- 你得真心喜欢些什么,才能过好漫长的冬天
- (转)量化投资大师采访摘录-詹姆斯·西蒙斯 James Simons
- 原创 | 职场风云 (三)面对压力
- java实现复数之间加减乘运算_用java实现复数的加减乘除运算(改进第1次)
- 【人脸表情识别】基于matlab GUI LBP+SVM脸部动态特征人脸表情识别【含Matlab源码 1369期】
- 【三维路径规划】基于matlab粒子群算法无人机三维路径规划【含Matlab源码 1260期】
- 【图像压缩】基于matlab小波变换图像压缩【含Matlab源码 879期】
- 【图像去噪】基于matlab GUI均值+中值+空间+高斯滤波图像去噪【含Matlab源码 763期】
- 【图像分割】基于matlab蚁群优化模糊聚类图像分割【含Matlab源码 130期】