Windows Mobile下如何去掉WTL對話方塊CStdDialogImpl的OK按鈕

來源:互聯網
上載者:User

 

簡介

本文講述如何去掉WTL對話方塊的右上方的OK按鈕。

 

問題

繼承於CStdDialogImpl類的對話方塊預設是有一個OK按鈕在右上方的。如

為什麼會有這個OK按鈕呢,因為類比生產的代碼是繼承於CStdDialogImpl<CConfigDialog>,CConfigDialog為自訂的類。

class CConfigDialog : public CStdDialogImpl<CConfigDialog>,     public CWinDataExchange<CConfigDialog>
{
public:
BEGIN_MSG_MAP(CConfigDialog)
CHAIN_MSG_MAP(CStdDialogImpl<CConfigDialog>)
END_MSG_MAP()

 

而CStdDialogImpl繼承於CStdDialogImplBase,預設shidi flags 是WTL_STD_SHIDIF

template <class T, UINT t_shidiFlags = WTL_STD_SHIDIF, bool t_bModal = true >
class ATL_NO_VTABLE CStdDialogImpl : public CStdDialogImplBase< T, t_shidiFlags, t_bModal>
{};

WTL_STD_SHIDIF包含了SHIDIF_DONEBUTTON。

#define WTL_STD_SHIDIF   SHIDIF_DONEBUTTON | SHIDIF_SIPDOWN | SHIDIF_SIZEDLGFULLSCREEN

SHIDIF_DONEBUTTON就是右上方顯示的OK按鈕。

 

 

實現

要把這個按鈕去掉,有以下步驟。

 

1. 修改CConfigDialog 的繼承,繼承自CStdDialogImpl<CConfigDialog, SHIDIF_SIZEDLGFULLSCREEN | SHIDIF_SIPDOWN>

class CConfigDialog : public CStdDialogImpl<CConfigDialog, SHIDIF_SIZEDLGFULLSCREEN | SHIDIF_SIPDOWN>,
public CWinDataExchange<CConfigDialog>
{
public: 
typedef CStdDialogImpl<CConfigDialog, SHIDIF_SIZEDLGFULLSCREEN | SHIDIF_SIPDOWN> CConfigDialogWithoutDone;

BEGIN_MSG_MAP(CConfigDialog)
CHAIN_MSG_MAP(CConfigDialogWithoutDone)
END_MSG_MAP()

同時需要修改CHAIN_MSG_MAP。

2.在OnInitDialog()函數增加SHDoneButton和ModifyStyle的調用。

LRESULT CConfigDialog::OnInitDialog(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
{
SHDoneButton(m_hWnd, SHDB_HIDE);
ModifyStyle(0, WS_NONAVDONEBUTTON, SWP_NOSIZE);
return bHandled = FALSE;
}

 

完成了,效果如下:

參考 CStdDialogImpl and the OK button

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.