mfc控件坐标
2017-08-01 11:40
113 查看
在mfc工程中控件或者窗口位置的调整是经常遇到的,特别是基于对话框的工程。位置的调整包括坐标、长度和宽度的变化,一般在窗口类的OnSize函数中实现。控件位置的调整涉及的函数有:GetWindowRect()、ScreenToClient()、GetClientRect()、MoveWindow()或SetWindowPos(),功能意义如下:
例子:
窗口大小用setwindowpos();为1024*768
控件为 500*500(GetDlgItem(IDC_STATIC)->SetWindowPos(0, 0, 0, 500, 500, NULL);)
GetWindowRect():获得窗口在屏幕上的矩形坐标,调整控件位置时必须首先获得该屏幕坐标; 带四周边框 GetWindowRect(Rect rect);
得到的窗口为: {top=0 bottom=768 left=0 right=1024}
控件为: {top=30 bottom=530 left=8 right=508}
ScreenToClient():转换屏幕坐标到客户区坐标,如果为子窗口,转换后坐标为相对于父窗口的坐标,若为独立窗口,转换后客户区左上坐标为(0,0);调整子窗口时这一步也是必须的;
GetClientRect():获得窗口客户区坐标,左上坐标永远为(0,0); 不带边框 GetClientRect(Rect rect);
得到的窗口为: {top=0 bottom=730 left=0 right=1008}
控件为: {top=0 bottom=500 left=0 right=500}
MoveWindow():调整控件到指定位置;
MoveWindow( int x, int y, int nWidth, int nHeight, BOOL bRepaint = TRUE ); (有文件链接)
SetWindowPos():调整控件的位置,该函数使用更灵活,多用于只修改控件位置而大小不变或只修改大小而位置不变的情况: 以客户区的起始坐标为原点
SetWindowPos(HWND hWndlnsertAfter, int X,int Y,int cX,int cY,UNIT Flags);(有文件链接)
例子:
窗口大小用setwindowpos();为1024*768
控件为 500*500(GetDlgItem(IDC_STATIC)->SetWindowPos(0, 0, 0, 500, 500, NULL);)
GetWindowRect():获得窗口在屏幕上的矩形坐标,调整控件位置时必须首先获得该屏幕坐标; 带四周边框 GetWindowRect(Rect rect);
得到的窗口为: {top=0 bottom=768 left=0 right=1024}
控件为: {top=30 bottom=530 left=8 right=508}
ScreenToClient():转换屏幕坐标到客户区坐标,如果为子窗口,转换后坐标为相对于父窗口的坐标,若为独立窗口,转换后客户区左上坐标为(0,0);调整子窗口时这一步也是必须的;
GetClientRect():获得窗口客户区坐标,左上坐标永远为(0,0); 不带边框 GetClientRect(Rect rect);
得到的窗口为: {top=0 bottom=730 left=0 right=1008}
控件为: {top=0 bottom=500 left=0 right=500}
MoveWindow():调整控件到指定位置;
MoveWindow( int x, int y, int nWidth, int nHeight, BOOL bRepaint = TRUE ); (有文件链接)
SetWindowPos():调整控件的位置,该函数使用更灵活,多用于只修改控件位置而大小不变或只修改大小而位置不变的情况: 以客户区的起始坐标为原点
SetWindowPos(HWND hWndlnsertAfter, int X,int Y,int cX,int cY,UNIT Flags);(有文件链接)
控件位置调整涉及的参变量有:主窗口的cx、cy坐标、参考点坐标。相对于调整位置时调用的函数,变量稍许复杂些。cx、cy坐标为主窗口的宽和高,有OnSize的参数给出,为窗口控件调整提供了变化的范围,所有的控件为了能够正常显示都不能超出这个范围。其实在开发过程中较难和重要的是参考控件的选择,其位置相对于主窗口来说必须好确定。常用的策略:
1. 选择主窗口上位置不随窗口大小变化的控件为参考;
2. 选择主窗口上控件的宽或者高固定的控件;
3. 选择与主窗口满足固定坐标关系的控件 ;
4. 选择主窗口上控件位置或者高宽容易确定的控件。
以上四种策略可在实际开发中作为参考!不管遇到什么的情况,一定要清楚:选择一个
相关文章推荐
- MFC 获取picture控件的鼠标点击坐标位置的方法
- mfc控件位置调整和坐标确定
- MFC中picture控件坐标转换
- MFC 获取picture控件的鼠标点击坐标位置的方法
- 在MFC的图片控件上用OpenGL的glDrawPixels函数画图时指定起点坐标
- MFC判断鼠标坐标是否在控件内
- mfc控件位置调整和坐标确定
- MFC程序中如何获取控件在客户区的坐标?
- MFC控件的坐标获取
- MFC对话框应用程序 如何在对话框窗口显示前获取窗口(控件)的屏幕坐标位置
- mfc控件位置坐标获取
- mfc控件位置调整和坐标确定
- MFC 学习之 图片控件坐标图
- mfc控件位置调整和坐标确定 .
- MFC如何获取控件的坐标
- MFC控件坐标位置
- MFC中picture控件坐标转换
- MFC 对话框 里在获取静态文本框内部相对于静态文本控件的坐标
- MFC 获取picture控件的鼠标点击坐标位置的方法(PreTranslateMessag)
- MFC重绘控件,坐标配置相关笔记