MFC中CPropertySheet為屬性頁(yè),頁(yè)面最下端自動(dòng)生成的“確定”、“取消”、“幫助”和“應用”按鈕無(wú)用,且放置在最下端不太美觀(guān),需要將其去掉,筆者在編程過(guò)程中采用的方法如下:
1.去掉“應用”按鈕。在CPropertySheet的構造函數中添加添加語(yǔ)句:
this->m_psh.dwFlags |= PSH_NOAPPLYNOW;作用是去掉“應用”按鈕。
2.去掉“幫助”按鈕的操作稍微復雜一些,需要在CPropertySheet的構造函數中加上如下語(yǔ)句:
this->m_psh.dwFlags &= ~(PSH_HASHELP);page1.m_psp.dwFlags &= ~(PSP_HASHELP);page2.m_psp.dwFlags &= ~(PSP_HASHELP);然后才能添加屬性頁(yè):
this->AddPage(&page1);this->AddPage(&page2);
需要注意的是,由于添加屬性頁(yè)的操作不一定在CPropertySheet的構造函數中,因此只需要保證CPropertySheet對象和屬性頁(yè)CPropertyPage對象中都有去掉上述去掉“幫助”按鈕的語(yǔ)句即可。
另外,“幫助”按鈕還可以采用如下方法去掉:
在CPropertySheet的OnInitDialog()函數中加入如下語(yǔ)句(若沒(méi)有生成OnInitDialog,可在ClassView中添加虛函數OnInitDialog):
CWnd *pWnd = GetDlgItem(IDHELP);if(pWnd && pWnd->GetSafeHwnd()){ pWnd->ShowWindow(false);}
3.去掉“確定”和“取消”按鈕。在CPropertySheet的OnInitDialog()函數中加入如下語(yǔ)句:
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 }
上述方法去掉按鈕后,在界面下方的按鈕會(huì )消失,但是會(huì )留下空白,需要重新調整窗口,消除空白,此時(shí)可以考慮如下方法:
4.去掉四個(gè)按鈕后消除界面下方的空白。
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 //調整窗體大小 17 ::SetWindowPos(this->m_hWnd, HWND_TOP, 0,0,wdnRect.Width(),wdnRect.Height() - btnRect.Height(), SWP_NOMOVE | SWP_NOZORDER);
上述代碼添加在CPropertySheet類(lèi)的OnInitDialog()函數中,可以消除隱藏按鈕后留下的空白。
聯(lián)系客服