怎么设置模态对话框的显示位置
2个回答
展开全部
1,你要知道系统自身是设置过窗口的显示的位置的,就在CreateWindow的时候,但是你最好还是不要改那个位置,因为那是Microsoft给我们提供的源代码,你把那个改了之后,那么以后你所有的窗口的显示都是你现在的设置了;
2,必须是窗口创建成功后的,你才能设置它的位置,就像是:当一个东西不存在的时候你是不能对它作任何要求的;
3,你要找到窗口刚刚创建成功时是在哪个地方,显示的时候是在什么地方,这个我可以告诉你,是在Instance()函数的里面完成的,但是,这只是把这个应用程序实例化了,这个里面只有一个DoModal(),基本上这个里面是改不了什么东西的,还有一个位置就是OnInitDialog()函数,它是来初始化这个Dialog的,自然它的显示位置和大小都是可以控制的,那么你在此处调用MoveWindow()是可以的。
至于还有一个函数是SetWindowPos(),这个我刚试过了,对与对话框的应用程序是不行的,这应该是单文档和多文档的应用程序中使用弹出式窗口的时候可以使用。
在OnInitDialog()这个里面使用MoveWindow(1,1,100,100)就可以显示在(1,1)这个位置上显示一个宽100,高100的对话框了。。。。
2,必须是窗口创建成功后的,你才能设置它的位置,就像是:当一个东西不存在的时候你是不能对它作任何要求的;
3,你要找到窗口刚刚创建成功时是在哪个地方,显示的时候是在什么地方,这个我可以告诉你,是在Instance()函数的里面完成的,但是,这只是把这个应用程序实例化了,这个里面只有一个DoModal(),基本上这个里面是改不了什么东西的,还有一个位置就是OnInitDialog()函数,它是来初始化这个Dialog的,自然它的显示位置和大小都是可以控制的,那么你在此处调用MoveWindow()是可以的。
至于还有一个函数是SetWindowPos(),这个我刚试过了,对与对话框的应用程序是不行的,这应该是单文档和多文档的应用程序中使用弹出式窗口的时候可以使用。
在OnInitDialog()这个里面使用MoveWindow(1,1,100,100)就可以显示在(1,1)这个位置上显示一个宽100,高100的对话框了。。。。
展开全部
楼上的是瞎说的, 我试过了,不行。
正确方式是:
在 你需要打开的对话框的初始函数里 写下:
CRect rc;
int cx,cy;
GetWindowRect(rc);
cx = GetSystemMetrics(SM_CXSCREEN);
cy = GetSystemMetrics(SM_CYSCREEN);
SetWindowPos(&wndTopMost,cx-450-rc.Width(),cy-60-rc.Height(),rc.Width(),rc.Height(),SWP_NOSIZE);
————————————————
即在你想要的位置显示。
原文链接:https://blog.csdn.net/w13922547238/article/details/81914557
正确方式是:
在 你需要打开的对话框的初始函数里 写下:
CRect rc;
int cx,cy;
GetWindowRect(rc);
cx = GetSystemMetrics(SM_CXSCREEN);
cy = GetSystemMetrics(SM_CYSCREEN);
SetWindowPos(&wndTopMost,cx-450-rc.Width(),cy-60-rc.Height(),rc.Width(),rc.Height(),SWP_NOSIZE);
————————————————
即在你想要的位置显示。
原文链接:https://blog.csdn.net/w13922547238/article/details/81914557
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询