还有怎么让程序在屏幕的正中间
15 个解决方案
#1
2个函数
MoveWindow
CenterWindow
MoveWindow
CenterWindow
#2
可以用楼上的方法
也可以在对话框属性中设置(至少VS2008有)
也可以在对话框属性中设置(至少VS2008有)
#3
通过相对位置计算一下,直接
#4
MoveWindow
#5
我用的是vs2005,那个是对话框的哪个属性?
#6
左上角:SetWindowPos(m_hWnd, NULL, 0, 0, 0,0,SWP_NOZORDER | SWP_NOSIZE);
屏幕中间:
int nScreenCX = ::GetSystemMetrics(SM_CXSCREEN);
int nScreenCY = ::GetSystemMetrics(SM_CYSCREEN);
CRect rect;
GetWindowRect(m_hWnd, rect);
int x = (nScreenCX - rect.Width()) / 2;
int y = (nScreenCY - rect.Height()) / 2;
SetWindowPos(m_hWnd, NULL, x, y, 0,0,SWP_NOZORDER | SWP_NOSIZE);
屏幕中间:
int nScreenCX = ::GetSystemMetrics(SM_CXSCREEN);
int nScreenCY = ::GetSystemMetrics(SM_CYSCREEN);
CRect rect;
GetWindowRect(m_hWnd, rect);
int x = (nScreenCX - rect.Width()) / 2;
int y = (nScreenCY - rect.Height()) / 2;
SetWindowPos(m_hWnd, NULL, x, y, 0,0,SWP_NOZORDER | SWP_NOSIZE);
#7
大哥,这个窗口句柄怎么得到啊
#8
m_hWnd 这参数怎么得到的?
#9
CWnd 派生的类都有这个成员。
#10
是有这个成员,但是这值不能用在这个函数里面啊
报这个错 'CWnd::SetWindowPos' : cannot convert parameter 1 from 'HWND' to 'const CWnd *'
报这个错 'CWnd::SetWindowPos' : cannot convert parameter 1 from 'HWND' to 'const CWnd *'
#11
用全局域
::SetWindowPos
如果要用在CWnd派生类中直接使用SetWindowPos成员函数
需要这样写:
左上角:SetWindowPos(NULL, 0, 0, 0,0,SWP_NOZORDER | SWP_NOSIZE);
屏幕中间:
int nScreenCX = ::GetSystemMetrics(SM_CXSCREEN);
int nScreenCY = ::GetSystemMetrics(SM_CYSCREEN);
CRect rect;
GetWindowRect(& rect);
int x = (nScreenCX - rect.Width()) / 2;
int y = (nScreenCY - rect.Height()) / 2;
SetWindowPos(NULL, x, y, 0,0,SWP_NOZORDER | SWP_NOSIZE);
::SetWindowPos
如果要用在CWnd派生类中直接使用SetWindowPos成员函数
需要这样写:
左上角:SetWindowPos(NULL, 0, 0, 0,0,SWP_NOZORDER | SWP_NOSIZE);
屏幕中间:
int nScreenCX = ::GetSystemMetrics(SM_CXSCREEN);
int nScreenCY = ::GetSystemMetrics(SM_CYSCREEN);
CRect rect;
GetWindowRect(& rect);
int x = (nScreenCX - rect.Width()) / 2;
int y = (nScreenCY - rect.Height()) / 2;
SetWindowPos(NULL, x, y, 0,0,SWP_NOZORDER | SWP_NOSIZE);
#12
没有成功,就是那个左上角显示的那个,
#13
在中间显示的那个,测试看不出来,默认就在中间显示吧。
#14
MFC对话框不是在资源里吗?打开这个对话框(在VS中),点Alt+Enter,有个窗口属性框(和控件属性差不多),有这一项。
#15
谢谢,暂时解决不了,不过上面的方法都是对的,不过是单纯的mfc来说的,我是用mfc开发的wince手持机,显示后跟屏幕上面有一个状态栏似的,不是程序的问题是手持机可能有其它的方法。
结贴,谢谢各位
结贴,谢谢各位
#1
2个函数
MoveWindow
CenterWindow
MoveWindow
CenterWindow
#2
可以用楼上的方法
也可以在对话框属性中设置(至少VS2008有)
也可以在对话框属性中设置(至少VS2008有)
#3
通过相对位置计算一下,直接
#4
MoveWindow
#5
可以用楼上的方法
也可以在对话框属性中设置(至少VS2008有)
我用的是vs2005,那个是对话框的哪个属性?
#6
左上角:SetWindowPos(m_hWnd, NULL, 0, 0, 0,0,SWP_NOZORDER | SWP_NOSIZE);
屏幕中间:
int nScreenCX = ::GetSystemMetrics(SM_CXSCREEN);
int nScreenCY = ::GetSystemMetrics(SM_CYSCREEN);
CRect rect;
GetWindowRect(m_hWnd, rect);
int x = (nScreenCX - rect.Width()) / 2;
int y = (nScreenCY - rect.Height()) / 2;
SetWindowPos(m_hWnd, NULL, x, y, 0,0,SWP_NOZORDER | SWP_NOSIZE);
屏幕中间:
int nScreenCX = ::GetSystemMetrics(SM_CXSCREEN);
int nScreenCY = ::GetSystemMetrics(SM_CYSCREEN);
CRect rect;
GetWindowRect(m_hWnd, rect);
int x = (nScreenCX - rect.Width()) / 2;
int y = (nScreenCY - rect.Height()) / 2;
SetWindowPos(m_hWnd, NULL, x, y, 0,0,SWP_NOZORDER | SWP_NOSIZE);
#7
左上角:SetWindowPos(m_hWnd, NULL, 0, 0, 0,0,SWP_NOZORDER | SWP_NOSIZE);
屏幕中间:
int nScreenCX = ::GetSystemMetrics(SM_CXSCREEN);
int nScreenCY = ::GetSystemMetrics(SM_CYSCREEN);
CRect rect;
GetWindowRect(m_hWnd, rect);
int x = (nScreenCX - rect.Width()) / 2;
int y = (nScreenCY - rect.Height()) / 2;
SetWindowPos(m_hWnd, NULL, x, y, 0,0,SWP_NOZORDER | SWP_NOSIZE);
大哥,这个窗口句柄怎么得到啊
#8
m_hWnd 这参数怎么得到的?
#9
CWnd 派生的类都有这个成员。
#10
是有这个成员,但是这值不能用在这个函数里面啊
报这个错 'CWnd::SetWindowPos' : cannot convert parameter 1 from 'HWND' to 'const CWnd *'
报这个错 'CWnd::SetWindowPos' : cannot convert parameter 1 from 'HWND' to 'const CWnd *'
#11
用全局域
::SetWindowPos
如果要用在CWnd派生类中直接使用SetWindowPos成员函数
需要这样写:
左上角:SetWindowPos(NULL, 0, 0, 0,0,SWP_NOZORDER | SWP_NOSIZE);
屏幕中间:
int nScreenCX = ::GetSystemMetrics(SM_CXSCREEN);
int nScreenCY = ::GetSystemMetrics(SM_CYSCREEN);
CRect rect;
GetWindowRect(& rect);
int x = (nScreenCX - rect.Width()) / 2;
int y = (nScreenCY - rect.Height()) / 2;
SetWindowPos(NULL, x, y, 0,0,SWP_NOZORDER | SWP_NOSIZE);
::SetWindowPos
如果要用在CWnd派生类中直接使用SetWindowPos成员函数
需要这样写:
左上角:SetWindowPos(NULL, 0, 0, 0,0,SWP_NOZORDER | SWP_NOSIZE);
屏幕中间:
int nScreenCX = ::GetSystemMetrics(SM_CXSCREEN);
int nScreenCY = ::GetSystemMetrics(SM_CYSCREEN);
CRect rect;
GetWindowRect(& rect);
int x = (nScreenCX - rect.Width()) / 2;
int y = (nScreenCY - rect.Height()) / 2;
SetWindowPos(NULL, x, y, 0,0,SWP_NOZORDER | SWP_NOSIZE);
#12
用全局域
::SetWindowPos
如果要用在CWnd派生类中直接使用SetWindowPos成员函数
需要这样写:
左上角:SetWindowPos(NULL, 0, 0, 0,0,SWP_NOZORDER | SWP_NOSIZE);
屏幕中间:
int nScreenCX = ::GetSystemMetrics(SM_CXSCREEN);
int nScreenCY = ::GetSystemMetrics(SM_CYSCREEN);
CRect rect;
GetWindowRect(& rect);
int x = (nScreenCX - rect.Width()) / 2;
int y = (nScreenCY - rect.Height()) / 2;
SetWindowPos(NULL, x, y, 0,0,SWP_NOZORDER | SWP_NOSIZE);
没有成功,就是那个左上角显示的那个,
#13
在中间显示的那个,测试看不出来,默认就在中间显示吧。
#14
可以用楼上的方法
也可以在对话框属性中设置(至少VS2008有)
我用的是vs2005,那个是对话框的哪个属性?
MFC对话框不是在资源里吗?打开这个对话框(在VS中),点Alt+Enter,有个窗口属性框(和控件属性差不多),有这一项。
#15
谢谢,暂时解决不了,不过上面的方法都是对的,不过是单纯的mfc来说的,我是用mfc开发的wince手持机,显示后跟屏幕上面有一个状态栏似的,不是程序的问题是手持机可能有其它的方法。
结贴,谢谢各位
结贴,谢谢各位