用CWnd成员函数: GetWindowRect/GetClientRect, 后者是获取客户区的大小, 前者是整个窗口的大小 如:
CRect rect;
GetWindowRect(&rect);
CRect成员函数:Width()和Height()返回窗口高度, 宽度
2 动态建立的控制, 用其父窗口的一个虚函数:PreTranslateMessage
它的参数是一个消息结构体
比如:在View类OnCreat里加入代码:
static CButton btn;
CRect rect(10, 20, 20, 40);
btnCreat(_T("abc"), WS_VISIBLE | BS_PUSHBUTTON, rect, 1234);
然后在View类里建立一个虚函数PreTranslateMessage
在它里面加入代码:
if (pMsg->message == WM_LBUTTONDOWN && pMsg->hwnd==btnm_hwnd)
{
}
使用 Cwnd::MoveWindow(int x, int y, int w, int h, int rep = 1)
这个方法
首先获取到当前窗口的x y坐标
然后调用 MoveWindow() 即可
可以调用::GetSystemMetrics(SM_CXSCREEN),::GetSystemMetrics(SM_CYSCREEN),返回横纵分辨率,然后根据分辨率改变窗口大小
改变窗口大小可以使用MoveWindow函数
1、
要控制一个框架的的最大最小尺寸,你需要做两件事情在CFrameWnd的继承类中
处理消息WM_GETMINMAXINFO,结构MINMAXINFO设置了整个窗口类的限制,因此记
住要考虑工具条,卷动条等等的大小
// 最大最小尺寸的象素点 - 示例
#define MINX 200
#define MINY 300
#define MAXX 300
#define MAXY 400
void CMyFrameWnd::OnGetMinMaxInfo(MINMAXINFO FAR lpMMI)
{
CRect rectWindow;
GetWindowRect(&rectWindow);
CRect rectClient;
GetClientRect(&rectClient);
// get offset of toolbars, scrollbars, etc
int nWidthOffset = rectWindowWidth() - rectClientWidth();
int nHeightOffset = rectWindowHeight() - rectClientHeight();
lpMMI->ptMinTrackSizex = MINX + nWidthOffset;
lpMMI->ptMinTrackSizey = MINY + nHeightOffset;
lpMMI->ptMaxTrackSizex = MAXX + nWidthOffset;
lpMMI->ptMaxTrackSizey = MAXY + nHeightOffset;
}
第二步,在CFrameWnd的继承类的PreCreateWindow函数中去掉WS_MAXIMIZEBOX消
息,否则在最大化时你将得不到预料的结果
BOOL CMyFrameWnd::PreCreateWindow(CREATESTRUCT& cs)
{
csstyle &= ~WS_MAXIMIZEBOX;
return CFrameWnd::PreCreateWindow(cs);
}
2、
由于一般窗口大小的改变,都是用户拖动窗口边框而造成的。所以,我们可以截获主窗口消息 WM_NCHITTEST在其响应函数中判断CWnd::OnNcHitTest()的返回值是否为 HTRIGHT,HTLEFT,HTTOP,HTBOTTOM四个值之一,如果是,说明用户此时已点击了四个边框之一,此时我们应该返回 HTCLIENT那么,鼠标的形状就不会变成水平或垂直的双向箭头,用户就不可能依靠拖动边框来改变窗口大小了。
另外,还应补上一个小漏洞,就是还要把系统菜单中的SC_SIZE去掉。
RECT rt;//fullsceen
SystemParametersInfo(SPI_GETWORKAREA, 0, &rt, 0);
int su_FullW =rtright;
int su_FullH =rtbottom;
this->MoveWindow(0,0,su_FullW,su_FullH);
将这段代码放到OnInitDialog()开头处,自动获取屏幕的像素尺寸,并将窗口拉伸以适应屏幕
以上就是关于c++的mfc中 1,用哪个函数获取一个窗口的顶点以及宽度,高度 2,用一个Cbutton类创建一全部的内容,包括:c++的mfc中 1,用哪个函数获取一个窗口的顶点以及宽度,高度 2,用一个Cbutton类创建一、MFC中,如何动态改变窗口大小(通过传递高和长的值)注意是主窗口!、关于MFC窗口大小问题等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)