c++的mfc中 1,用哪个函数获取一个窗口的顶点以及宽度,高度 2,用一个Cbutton类创建一

c++的mfc中 1,用哪个函数获取一个窗口的顶点以及宽度,高度 2,用一个Cbutton类创建一,第1张

用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窗口大小问题等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/9667965.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-30
下一篇 2023-04-30

发表评论

登录后才能评论

评论列表(0条)

保存