MFC中CPropertySheet為屬性頁,頁面最下端自動生成的“確定”、“取消”、“幫助”和“應(yīng)用”按鈕無用,且放置在最下端不太美觀,需要將其去掉,筆者在編程過程中采用的方法如下:
1.去掉“應(yīng)用”按鈕。在CPropertySheet的構(gòu)造函數(shù)中添加添加語句:
this->m_psh.dwFlags |= PSH_NOAPPLYNOW;
作用是去掉“應(yīng)用”按鈕。
2.去掉“幫助”按鈕的操作稍微復(fù)雜一些,需要在CPropertySheet的構(gòu)造函數(shù)中加上如下語句:
this->m_psh.dwFlags &= ~(PSH_HASHELP);page1.m_psp.dwFlags &= ~(PSP_HASHELP);page2.m_psp.dwFlags &= ~(PSP_HASHELP);
然后才能添加屬性頁:
this->AddPage(&page1);this->AddPage(&page2);
需要注意的是,由于添加屬性頁的操作不一定在CPropertySheet的構(gòu)造函數(shù)中,因此只需要保證CPropertySheet對象和屬性頁CPropertyPage對象中都有去掉上述去掉“幫助”按鈕的語句即可。
另外,“幫助”按鈕還可以采用如下方法去掉:
在CPropertySheet的OnInitDialog()函數(shù)中加入如下語句(若沒有生成OnInitDialog,可在ClassView中添加虛函數(shù)OnInitDialog):
CWnd *pWnd = GetDlgItem(IDHELP);if(pWnd && pWnd->GetSafeHwnd()){ pWnd->ShowWindow(false);}
3.去掉“確定”和“取消”按鈕。在CPropertySheet的OnInitDialog()函數(shù)中加入如下語句:
1 CWnd *pWnd = GetDlgItem(IDOK);2 if(pWnd && pWnd->GetSafeHwnd()){3 pWnd->ShowWindow(false);4 }5 6 pWnd = GetDlgItem(IDCANCEL);7 if(pWnd && pWnd->GetSafeHwnd()){8 pWnd->ShowWindow(false);9 }
上述方法去掉按鈕后,在界面下方的按鈕會消失,但是會留下空白,需要重新調(diào)整窗口,消除空白,此時可以考慮如下方法:
4.去掉四個按鈕后消除界面下方的空白。
1 GetDlgItem(IDOK)->ShowWindow(SW_HIDE); 2 3 GetDlgItem(IDHELP)->ShowWindow(SW_HIDE); 4 5 GetDlgItem(IDCANCEL)->ShowWindow(SW_HIDE); 6 7 GetDlgItem(ID_APPLY_NOW)->ShowWindow(SW_HIDE); 8 9 //獲取窗體尺寸10 CRect btnRect;11 GetDlgItem(IDCANCEL)->GetWindowRect(&btnRect); 12 13 CRect wdnRect; 14 GetWindowRect(&wdnRect);15 16 //調(diào)整窗體大小 17 ::SetWindowPos(this->m_hWnd, HWND_TOP, 0,0,wdnRect.Width(),wdnRect.Height() - btnRect.Height(), SWP_NOMOVE | SWP_NOZORDER);
上述代碼添加在CPropertySheet類的OnInitDialog()函數(shù)中,可以消除隱藏按鈕后留下的空白。