#include "wx/msw/private.h"
-extern WXWORD wxCharCodeWXToMSW(int id, bool *isVirtual);
-
IMPLEMENT_DYNAMIC_CLASS(wxAcceleratorTable, wxObject)
// ----------------------------------------------------------------------------
class WXDLLEXPORT wxAcceleratorRefData: public wxObjectRefData
{
- friend class WXDLLEXPORT wxAcceleratorTable;
+ friend class WXDLLIMPEXP_FWD_CORE wxAcceleratorTable;
public:
wxAcceleratorRefData();
virtual ~wxAcceleratorRefData();
HACCEL m_hAccel;
bool m_ok;
- DECLARE_NO_COPY_CLASS(wxAcceleratorRefData)
+ wxDECLARE_NO_COPY_CLASS(wxAcceleratorRefData);
};
// ============================================================================
{
m_refData = new wxAcceleratorRefData;
- HACCEL hAccel = ::LoadAccelerators(wxGetInstance(), resource);
+ HACCEL hAccel = ::LoadAccelerators(wxGetInstance(), resource.wx_str());
M_ACCELDATA->m_hAccel = hAccel;
M_ACCELDATA->m_ok = hAccel != 0;
}
{
int flags = entries[i].GetFlags();
- BYTE fVirt = 0;
+ BYTE fVirt = FVIRTKEY;
if ( flags & wxACCEL_ALT )
- fVirt |= FALT | FVIRTKEY;
+ fVirt |= FALT;
if ( flags & wxACCEL_SHIFT )
- fVirt |= FSHIFT | FVIRTKEY;
+ fVirt |= FSHIFT;
if ( flags & wxACCEL_CTRL )
- fVirt |= FCONTROL | FVIRTKEY;
-
- bool isVirtual;
+ fVirt |= FCONTROL;
- WORD key = wxCharCodeWXToMSW(entries[i].GetKeyCode(), &isVirtual);
- if (isVirtual)
- fVirt |= FVIRTKEY;
+ WORD key = wxCharCodeWXToMSW(entries[i].GetKeyCode());
arr[i].fVirt = fVirt;
arr[i].key = key;
M_ACCELDATA->m_ok = (M_ACCELDATA->m_hAccel != 0);
}
-bool wxAcceleratorTable::operator==(const wxAcceleratorTable& accel) const
-{
- const wxAcceleratorRefData *
- accelData = (wxAcceleratorRefData *)accel.m_refData;
-
- return m_refData ? (accelData &&
- M_ACCELDATA->m_hAccel == accelData->m_hAccel)
- : !accelData;
-}
-
bool wxAcceleratorTable::IsOk() const
{
return (M_ACCELDATA && (M_ACCELDATA->m_ok));
bool wxAcceleratorTable::Translate(wxWindow *window, WXMSG *wxmsg) const
{
-#if 0
- // calling TranslateAccelerator() with child window doesn't do anything so
- // it's probably a bug
- wxASSERT_MSG( window->IsTopLevel(),
- _T("TranslateAccelerator() needs a top level window") );
-#endif
-
MSG *msg = (MSG *)wxmsg;
return Ok() && ::TranslateAccelerator(GetHwndOf(window), GetHaccel(), msg);
}