VC++6.0窗口移动编程

VC++6.0窗口移动编程,第1张

这样也可以实现:

1为你的对话框增加点击鼠标左键消息,VC6的话用类向导添加(CTRL+W),

VC7在对话框属性页里加

2在刚才增加的消息函数里增加下面的代码就好了

this->

PostMessage

(WM_NCLBUTTONDOWN,HTCAPTION,MAKELPARAM(pointx,pointy));

//

例:

void

[CxxxDlg]::OnLButtonDown(UINT

nFlags,

CPoint

point)

{

this->PostMessage(WM_NCLBUTTONDOWN,HTCAPTION,MAKELPARAM(pointx,pointy));

CDialog::OnLButtonDown(nFlags,

point);

}

CreateWindowEx函数的第一个参数为窗口样式

设置成WS_EX_TOPMOST就是最顶层窗口

或者用SetWindowPos函数也可以设置Z序

栗子:

MFC应用程序、基于对话框、classwizard重载WM_INITDIALOG消息,实现OnInitDialog函数,在函数中添加语句:

SetWindowPos(&CWnd::wndTopMost,0,0,0,0,SWP_NOMOVE|SWP_NOSIZE);即可

详细说巨麻烦!我给你简单讲一下,想了解全部就看Charles Petzold著《Windows程序设计》(第五版)北京大学出版社。

首先,你必须已经建立了一个窗口。这时,你在这个窗口内点了一下鼠标左键,Windows系统会将这个“消息(或者说事件)”放入到系统消息队列里。之后它会自动分辨出这是哪个窗口所接收的消息,并将这个消息放入到该窗口所对应的应用程序消息队列里。

第二,你的应用程序主函数:WinMain()执行到消息循环后,代码是:

while (GetMessage(&msg, NULL, 0, 0))

{

TranslateMessage(&msg);

DispatchMessage(&msg);

}

GetMessage()函数从应用程序消息队列里边接收“单击鼠标左键”这一消息,返回值不为0,所以进入循环体,第二个函数用来转换某些键盘消息,而我们点的是鼠标,所以在此直接跳过;第三个函数,将该消息发送回Windows。

Windows接收到DispatchMessage()函数发送的消息后,它会自动找到应把消息发往的窗口过程。并把消息向其传递。之后,进入WndProc函数。你会感到这是“Windows调用了WndProc()”,所以WndProc()才被称为“回调函数”。

进入WndProc()之后,通过switch()逻辑检测接收的信息并做出相应的处理和 *** 作。例如,单击鼠标左键,由WndProc()函数掌管的窗口应该进行怎样的变化……这些东西要我们自己来写喽。但其中有些东西几乎是固定的。比如收到WM_DESTROY消息后,一般调用PostQuitMessage(0)发送WM_QUIT消息,用来结束消息循环,但也不一定,前不久我才写过一个双窗口的程序,当关掉一个窗口后,你应当保证另一个窗口不被关闭……

当WndProc()处理完毕后,DispatchMessage()函数才返回,这时,又要从GetMessage()函数开始新一轮的循环啦~

先说这么多吧(已经不少了!)不懂再问。

以上就是关于VC++6.0窗口移动编程全部的内容,包括:VC++6.0窗口移动编程、VC程序: 1.怎能设计出QQ那样的总在前的面板 2.并举例说明,我是个初学者,说点清楚点。谢谢。、VC++的窗口过程理解等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址: http://outofmemory.cn/zz/9481410.html

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

发表评论

登录后才能评论

评论列表(0条)

保存