这样也可以实现:
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++的窗口过程理解等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)