GetWindowRect();获取的是以屏幕为坐标轴,此窗口在屏幕上的位置。
GetClientRect();获取的是以其自身的最左上角的点为坐标原点,此窗口的位置。
四、界面的切换。
对于一个应用程序,对话框之间的跳转需要一个类似容器的窗口新建一个对话框(标注为empty对话框),在里面不加任何东西,调好大小,因为它就是你的应用程序的窗口大小这时建好所有你要跳转的对话框,通常有个主界面对话框(标注为main对话框),我们要做的就是把main放入到那个empty中,其中有一步很重要,把main的属性(border改为thin或none,style改为child)接下来讲讲如何把main放入empty
#include"maindlg.h"
#include"setupdlg.h"
//初始参数
public:
CDialog *m_pPages[14];//定义的14,就是说能够存放的最多对话框,根据需求改变
UINT m_IDD[14]; //每个对话框对应的IDD_XXX
int m_nNumOfPage; //标示数组下标
CRect showRect; //画布
CMainDlg *d_main;
CSetupDlg *d_setup;
public:
BOOLAddPage(CDialog* pDialog,UINT ID);//添加进空对话框
void ShowPage(int CurrentPage); //把你所需要显示的对话框显示出来
CEmptyDlg --emptydlg.cpp
m_nNumOfPage=0;
d_main = new CMainDlg(this);//this即empty对话框的窗口指针,就是说新建一个子对象指针
d_setup = new CSetupDlg (this);
BOOLCEmptyDlg::AddPage(CDialog* pDialog,UINT ID)
{
m_pPages[m_nNumOfPage]=pDialog;
m_IDD[m_nNumOfPage]=ID;
m_pPages[m_nNumOfPage]->Create(ID,this);
m_pPages[m_nNumOfPage]->MoveWindow(&showRect);
m_nNumOfPage++;
return true;
}
voidCEmptyDlg::ShowPage(int CurrentPage)
{
for(intnCount=0;nCount { if(nCount==CurrentPage) { m_pPages[nCount]->ShowWindow(SW_SHOW); continue; } m_pPages[nCount]->ShowWindow(SW_HIDE); } } BOOL CEmptyDlg::OnInitDialog() { CDialog::OnInitDialog(); showRect.SetRect(-5,-5,800,600); this->AddPage(d_main,IDD_DEK265_MAIN); this->AddPage(d_setup,IDD_DEK265_SETUP); this->ShowPage(0);//把main对话框显示出来 } main对话框 按钮函数 voidCMainDlg::ClickBtnMaint() { // TODO: 在此处添加消息处理程序代码 CEmptyDlg *pMMD =(CEmptyDlg*)AfxGetMainWnd(); pMMD->ShowPage(1);//跳到setup对话框 }