#include "wx/control.h"
#endif
-#if !defined(__GNUWIN32__) && !defined(__SALFORDC__)
+#if !defined(__GNUWIN32__)
#include "malloc.h"
#endif
#include <shellapi.h>
#if defined(WINCE_WITHOUT_COMMANDBAR)
#include <aygshell.h>
+ #include "wx/msw/wince/resources.h"
#endif
#include "wx/msw/wince/missing.h"
return true;
}
-bool wxToolMenuBar::MSWCreateToolbar(const wxPoint& WXUNUSED(pos), const wxSize& WXUNUSED(size), wxMenuBar* menuBar)
+bool wxToolMenuBar::MSWCreateToolbar(const wxPoint& WXUNUSED(pos),
+ const wxSize& WXUNUSED(size),
+ wxMenuBar *menuBar)
{
SetMenuBar(menuBar);
if (m_menuBar)
m_menuBar->SetToolBar(this);
+ HWND hwndParent = GetHwndOf(GetParent());
+ wxCHECK_MSG( hwndParent, false, wxT("should have valid parent HWND") );
+
#if defined(WINCE_WITHOUT_COMMANDBAR)
- // Create the menubar.
- SHMENUBARINFO mbi;
-
- memset (&mbi, 0, sizeof (SHMENUBARINFO));
- mbi.cbSize = sizeof (SHMENUBARINFO);
- mbi.hwndParent = (HWND) GetParent()->GetHWND();
-#ifdef __SMARTPHONE__
- mbi.nToolBarId = 5002;
-#else
- mbi.nToolBarId = 5000;
-#endif
- mbi.nBmpId = 0;
- mbi.cBmpImages = 0;
- mbi.dwFlags = 0 ; // SHCMBF_EMPTYBAR;
+ // create the menubar.
+ WinStruct<SHMENUBARINFO> mbi;
+
+ mbi.hwndParent = hwndParent;
+ mbi.nToolBarId = wxIDM_SHMENU;
mbi.hInstRes = wxGetInstance();
- if (!SHCreateMenuBar(&mbi))
+ if ( !SHCreateMenuBar(&mbi) )
{
- wxFAIL_MSG( _T("SHCreateMenuBar failed") );
+ wxFAIL_MSG( wxT("SHCreateMenuBar failed") );
return false;
}
SetHWND((WXHWND) mbi.hwndMB);
#else
- HWND hWnd = CommandBar_Create(wxGetInstance(), (HWND) GetParent()->GetHWND(), GetId());
+ HWND hWnd = CommandBar_Create(wxGetInstance(), hwndParent, GetId());
SetHWND((WXHWND) hWnd);
#endif
// Return HMENU for the menu associated with the commandbar
WXHMENU wxToolMenuBar::GetHMenu()
{
-#if defined(__HANDHELDPC__)
- return 0;
-#else
+#if !defined(__HANDHELDPC__)
if (GetHWND())
{
- return (WXHMENU) (HMENU)::SendMessage((HWND) GetHWND(), SHCMBM_GETMENU, (WPARAM)0, (LPARAM)0);
+ return (WXHMENU)::SendMessage(GetHwnd(), SHCMBM_GETMENU, 0, 0);
}
- else
- return 0;
#endif
+
+ return NULL;
}
// ----------------------------------------------------------------------------
bool wxToolMenuBar::DoDeleteTool(size_t pos, wxToolBarToolBase *tool)
{
+ // Skip over the menus
+ if (GetMenuBar())
+ pos += GetMenuBar()->GetMenuCount();
+
// the main difficulty we have here is with the controls in the toolbars:
// as we (sometimes) use several separators to cover up the space used by
// them, the indices are not the same for us and the toolbar
RECT r;
if ( !::SendMessage(GetHwnd(), TB_GETITEMRECT, pos, (LPARAM)&r) )
{
- wxLogLastError(_T("TB_GETITEMRECT"));
+ wxLogLastError(wxT("TB_GETITEMRECT"));
}
int width = r.right - r.left;
const wxString& label = tool->GetLabel();
if ( !label.empty() )
{
- button.iString = (int)label.c_str();
+ button.iString = (int)label.wx_str();
}
}
break;
default:
- wxFAIL_MSG( _T("unexpected toolbar button kind") );
+ wxFAIL_MSG( wxT("unexpected toolbar button kind") );
// fall through
case wxITEM_NORMAL:
return true;
}
-bool wxToolMenuBar::MSWCommand(WXUINT WXUNUSED(cmd), WXWORD id)
+bool wxToolMenuBar::MSWCommand(WXUINT WXUNUSED(cmd), WXWORD id_)
{
- wxToolBarToolBase *tool = FindById((int)id);
+ const int id = (signed short)id_;
+
+ wxToolBarToolBase *tool = FindById(id);
if ( !tool )
{
bool checked = false;
void wxToolBar::DoSetToggle(wxToolBarToolBase *WXUNUSED(tool), bool WXUNUSED(toggle))
{
- wxFAIL_MSG( _T("not implemented") );
+ wxFAIL_MSG( wxT("not implemented") );
}
#endif