56手游网

您的位置:首页 > 资讯 > C语言MoveWindow的用法?

C语言MoveWindow的用法?

时间:2024-03-04 17:00:26作者:56手游来源:www.56.com.cn人气:4我要评论(0)

#001 //

#002 // 响应命令.

#003 // 

#004 //

#005 LRESULT CCaiWinMsg::OnCommand(int nID,int nEvent)

#006 { 

#007// 菜单选项命令响应:

#008switch (nID)

#009{

#010case IDC_CREATEBTN:

#011 //显示一个按钮。

#012 if (!m_hBtn)

#013 {

#014m_hBtn = CreateWindow(_T("BUTTON"),_T("按钮"),

#015WS_VISIBLE|WS_CHILD|BS_PUSHBUTTON,

#01650,50,100,32,

#017 m_hWnd,(HMENU)IDC_BTN,m_hInstance,NULL)

#018 } 

#019 break

#020case IDC_BTN: 

#021 OutputDebugS www.hnnedu.com tring(_T("按钮按下rn"))

#022 {

#023 static bool bChangeText = true

#024 if (bChangeText)

#025 {

#026//设置按钮的文字。

#027SetWindowText(m_hBtn,_T("改变它"))

#028 

#029//改变按钮窗口的位置和大小。

#030 MoveWindow(m_hBtn,10,10,100,32,TRUE)

#031 }

#032 else

#033 {

#034//设置按钮的文字。

#035SetWindowText(m_hBtn,_T("按钮"))

#036 

#037 //改变按钮窗口的位置和大小。

#038 MoveWindow(m_hBtn,50,50,100,32,TRUE)

#039 }

#040 

#041 //每一次都改变。

#042 bChangeText = !bChangeText 

#043 }

#044 break

#045default:

#046 return CCaiWin::OnCommand(nID,nEvent)

#047}

#048 

#049return 1

#050 }

MoveWindow和setwindowpos的区别

MoveWindow()就是移动窗口位置(也可用来改变大小)。用法如下:

BOOL MoveWindow(

HWND hWnd, // handle to window

int X, // horizontal position

C语言MoveWindow的用法?

int Y, // vertical position

int nWidth, // width

int nHeight,// height

BOOL bRepaint // repaint option

)

hWnd是你要移动的窗口的句柄;

X,Y是移动后窗口左上角的横纵坐标;

nWidth,nHeight是移动后窗口的宽度和高度;

bRepain是表示移动后的窗口是否需要重画,如果为真则在移动窗口后会向窗口过程函数发送一条WM_PAINT消息重绘窗口。

win32 禁止使用MoveWindow改变窗口大小

你好,区别如下:

要区分MoveWindow和setwindowpos的区别,我们先从msdn上入手:

1、MoveWindow

This function changes the position and dimensions of the specified window. For a top-level window, the position and dimensions are relative to the upper-left corner of the screen. For a child window, they are relative to the upper-left corner of the parent window's client area.

BOOL MoveWindow(

HWND hWnd,

int X,

int Y,

int nWidth,

int nHeight,

BOOL bRepaint

)

MoveWindow sends WM_WINDOWPOSCHANGED, WM_MOVE, WM_SIZE, and WM_NCCALCSIZE messages to the window. (这里很重要,说明MoveWindow函数内部不做真实的窗口处理,而是发送了一组消息,让其他函数进行处理,其实这个函数就是SetWindowPos,我们可以继续往下看)

2、SetWindowPos

This function changes the size, position, and z-order of a child, pop-up, or top-level window. Child, pop-up, and top-level windows are ordered according to their appearance on the screen. The topmost window receives the highest rank and is the first window in the z-order.

BOOL SetWindowPos(

HWND hWnd,

HWND hWndInsertAfter,

int X,

int Y,

int cx,

int cy,

UINT uFlags

)

SetWindowPos always causes a WM_WINDOWPOSCHANGED message to be sent to the window. The flags passed in this message are exactly the same as those passed into the function. No other messages are sent by this function. (SetWindowPos包含了z-order的设置,其功能比MoveWindow更为强大,包含了一组设置窗口显示状态的标志。然而,MoveWindow和SetWindowPos更本质的区别是,MoveWindow做了更多额外的事情,发送WM_MOVE, WM_SIZE, and WM_NCCALCSIZE等多种消息给窗口,而SetWindowPos则显的单纯的多,只发送了WM_WINDOWPOSCHANGED消息给窗口)

从上面可以看出MoveWindow和SetWindowPos实现的功能基本是一致的,但还是存在细微的差别,关键的一点是MoveWindow不仅通知窗口进行SetWindowPos操作,而且还发送了一批消息,告知窗口显示改变了,这样窗口就可以在内部进行一些操作。这点对处理ActiveX控件的resize很重要,在ActiveX控件中往往通过WM_SIZE消息处理关联窗口resize的窗口调整,所以在调用方必须使用MoveWindow才能使ActiveX控件实现resize。

c++ MoveWindow怎么用

可以拦截 WM_GETMINMAXINFO 消息,并设置相应的参数。

在 Windows 中,无论什么时候以何种方式改变窗口的尺寸或大小,是拖拽窗口边缘也好,或是在代码中调用改变窗口尺寸的函数也好,总之不管你用什么方法,Windows 都会首先发送 WM_GETMINMAXINFO 消息,消息附带了一个 MINMAXINFO 结构,意思是说:“我准备改变窗口的尺寸了,MINMAXINFO 结构的数据是要改变的尺寸信息,你可以修改或不修改这些数据。”

对于这个消息,wParam 没有意义,lParam 是指向 MINMAXINFO 结构体的指针,MINMAXINFO 结构体的定义:

typedef struct {

    POINT ptReserved                  //不用

    POINT ptMaxSize                   //最大范围

    POINT ptMaxPosition               //最大的放置点

    POINT ptMinTrackSize              //最小拖动范围

    POINT ptMaxTrackSize              //最大拖动范围

} MINMAXINFO

你可以在 WM_GETMINMAXINFO 消息的处理程序中,修改这些值来禁止窗口改变大小。

对于C++中的类,结构体,共用体等具有成员函数或变量的数据类型(对象)时,如果存在对象a,而对象中有成员b,那么可以使用a.b的方式,使用对应的成员。

如果存在变量p,指向a, 即p = ampa, 这时可以用p-gtb来使用成员b。

即,-gt操作符是用于带成员的类型对应指针上,用来提取成员变量或函数用的。

p-gtb等同于(*p).b。

对于任意的对象a,写作(ampa)-gtb也是可以的,不过很少有这样写。

以上就是关于C语言MoveWindow的用法?全部的内容,如果了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

相关阅读 极品飞车集结兰博基尼竞速级怎么改 极品飞车集结兰博基尼改装方式介绍金铲铲之战欺诈魔女怎么打,金铲铲之战欺诈魔女通关攻略s6坎特伯雷公主与骑士牺牲石像任务怎么做原神久雨莲的种子获取攻略威武霸气:疯狂动物园年兽怎么抓摩尔庄园洒水怎么放(植物大战僵尸洒水的植物怎么用)洛克王国清风山怎么走 洛克王国清风山怎么去恶果之地吞噬之刃攻略点点穿书如何看评论 点点穿书评论书籍方法介绍明日方舟律动方格图片

文章评论
发表评论

热门文章 苹果手机输入“我发现了石油”会自动开启定位?欢乐钓鱼大师兑换码新手礼包大全2024崩坏星穹铁道战意狂潮第四天弱点突袭全试用通关攻略崩坏星穹铁道茶百道联动时间

最新文章 极品飞车集结兰博基尼竞速级怎么改 极品飞车集结兰博基尼改装方金铲铲之战欺诈魔女怎么打,金铲铲之战欺诈魔女通关攻略s6 坎特伯雷公主与骑士牺牲石像任务怎么做原神久雨莲的种子获取攻略威武霸气:疯狂动物园年兽怎么抓摩尔庄园洒水怎么放(植物大战僵尸洒水的植物怎么用)

人气排行 苹果手机输入“我发现了石油”会自动开启定位?欢乐钓鱼大师兑换码新手礼包大全2024今日全平台公测崩坏星穹铁道战意狂潮第四天弱点突袭全试用通关攻略崩坏星穹铁道茶百道联动时间小鸡舰队出击古代遗迹第三赛季疾风与忍者传说事件攻略大全房间的秘密2攻略详情 房间的秘密2第一章节通关流程介绍火影忍者小南漂泊浪客图片

盖楼回复X

(您的评论需要经过审核才能显示)