Windows Mobile下使用Native C++(WTL, MFC, Win32)開發,如何為對話方塊加入菜單

來源:互聯網
上載者:User
背景

不像.NET Compact Framework, 使用Native C++開發開發對話方塊程式預設是沒有菜單的,需要手工增加。本文講述如何為對話方塊程式加入菜單。

 

.NET Compact Framework

使用.NET Compact Framework的程式,預設增加功能表項目(mainMenu1),只要編輯菜單顯示,增加處理事件就能操控菜單了,非常方便。

 

Native C++

使用Native C++進行開發,情況就大相徑庭了。新增的對話方塊預設是沒有菜單的,需要手工增加菜單支援,下面以一個WTL對話方塊程式作為例子講述如何加入菜單支援。步驟如下:

1.在資源檔增加菜單。

 

2.根據需求編輯菜單。

 

3.在對話方塊產生菜單。

修改OnInitDialog()函數來產生菜單。

LRESULT CConfigDialog::OnInitDialog(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
{
//AtlCreateEmptyMenuBar(m_hWnd);

SHMENUBARINFO mbi;
ZeroMemory(&mbi, sizeof(SHMENUBARINFO));

mbi.cbSize = sizeof(SHMENUBARINFO);
mbi.hwndParent = m_hWnd;
mbi.nToolBarId = IDR_MENU_CONFIG; //Menu resource ID
mbi.hInstRes = ModuleHelper::GetResourceInstance(); //GetModuleInstance(); //similar as ::AfxGetInstanceHandle(); in MFC
mbi.dwFlags |= SHCMBF_HMENU;

if(!SHCreateMenuBar(&mbi))
{
MessageBox(_T("Fail to create menu."));
}

return bHandled = FALSE;
}

 

4.加入菜單處理事件

在CConfigDialog類的加入事件處理映射。ID_OK和ID_CANCEL分別為功能表項目的ID。

BEGIN_MSG_MAP(CConfigDialog)
COMMAND_ID_HANDLER(ID_OK, OnOk)
COMMAND_ID_HANDLER(ID_CANCEL, OnCancel)
END_MSG_MAP()
LRESULT OnOk(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/);
LRESULT OnCancel(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/);

 

在cpp加入處理函數。

LRESULT CConfigDialog::OnOk(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled)
{
MessageBox(_T("OK"));
return 0;
}

LRESULT CConfigDialog::OnCancel(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled)
{
MessageBox(_T("Cancel"));
return 0;
}

完成了,如。

 

下面點擊OK。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.