void CMobileOpalDlg::SetCallButton(bool enabled, UINT strId) { HWND hWndMB = SHFindMenuBar(GetSafeHwnd()); if (hWndMB == NULL) return; TBBUTTONINFO tbi; memset (&tbi, 0, sizeof (tbi)); tbi.cbSize = sizeof (tbi); tbi.dwMask = TBIF_STATE; if (!::SendMessage(hWndMB, TB_GETBUTTONINFO, ID_CALL_ANSWER, (LPARAM)&tbi)) return; if (enabled) tbi.fsState |= TBSTATE_ENABLED; else tbi.fsState &= ~TBSTATE_ENABLED; CString text; if (strId != 0 && text.LoadString(strId)) { tbi.dwMask |= TBIF_TEXT; tbi.pszText = (LPWSTR)(const TCHAR *)text; } ::SendMessage(hWndMB, TB_SETBUTTONINFO, ID_CALL_ANSWER, (LPARAM)&tbi); }
void wxFrame::AttachMenuBar(wxMenuBar *menubar) { #if defined(__SMARTPHONE__) && defined(__WXWINCE__) wxMenu *autoMenu = NULL; if( menubar->GetMenuCount() == 1 ) { autoMenu = wxTopLevelWindowMSW::ButtonMenu::DuplicateMenu(menubar->GetMenu(0)); SetRightMenu(wxID_ANY, menubar->GetMenuLabel(0), autoMenu); } else { autoMenu = new wxMenu; for( size_t n = 0; n < menubar->GetMenuCount(); n++ ) { wxMenu *item = menubar->GetMenu(n); wxString label = menubar->GetMenuLabel(n); wxMenu *new_item = wxTopLevelWindowMSW::ButtonMenu::DuplicateMenu(item); autoMenu->Append(wxID_ANY, label, new_item); } SetRightMenu(wxID_ANY, _("Menu"), autoMenu); } #elif defined(WINCE_WITHOUT_COMMANDBAR) if (!GetToolBar()) { wxToolMenuBar* toolBar = new wxToolMenuBar(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxBORDER_NONE | wxTB_HORIZONTAL, wxToolBarNameStr, menubar); SetToolBar(toolBar); menubar->SetToolBar(toolBar); } // When the main window is created using CW_USEDEFAULT the height of the // menubar is not taken into account, so we resize it afterwards if a // menubar is present HWND hwndMenuBar = SHFindMenuBar(GetHwnd()); if ( hwndMenuBar ) { RECT mbRect; ::GetWindowRect(hwndMenuBar, &mbRect); const int menuHeight = mbRect.bottom - mbRect.top; RECT rc; ::GetWindowRect(GetHwnd(), &rc); // adjust for menu / titlebar height rc.bottom -= (2*menuHeight-1); ::MoveWindow(Gethwnd(), rc.left, rc.top, rc.right, rc.bottom, FALSE); } #endif wxFrameBase::AttachMenuBar(menubar); if ( !menubar ) { // actually remove the menu from the frame m_hMenu = (WXHMENU)0; InternalSetMenuBar(); } else // set new non NULL menu bar { #if !defined(__WXWINCE__) || defined(WINCE_WITH_COMMANDBAR) // Can set a menubar several times. if ( menubar->GetHMenu() ) { m_hMenu = menubar->GetHMenu(); } else // no HMENU yet { m_hMenu = menubar->Create(); if ( !m_hMenu ) { wxFAIL_MSG( wxT("failed to create menu bar") ); return; } } #endif InternalSetMenuBar(); } }