[PRB] VS 2005 + WTL 7.5 + WinCE + CMenuT
От: SchweinDeBurg Россия http://zarezky.spb.ru/
Дата: 22.03.06 13:51
Оценка: 2 (2)
Доброго времени суток нам всем!

В "версии" WTL 7.5 для Windows CE у класса CMenuT не реализованы следующие методы:

int GetMenuItemCount() const;
UINT GetMenuItemID(int nPos) const;
UINT GetMenuState(UINT nID, UINT nFlags) const;
int GetMenuString(UINT nIDItem, LPTSTR lpString, int nMaxCount, UINT nFlags) const;
BOOL ModifyMenu(UINT nPosition, UINT nFlags, UINT_PTR nIDNewItem = 0, LPCTSTR lpszNewItem = NULL);

Соответствующих функций действительно нет в Windows CE API, однако они реализованы в ATL 8.0 — см. файл <atlosapice.h>. Таким образом, мы можем внести соответствующие дополнения в файл <atluser.h>:

#ifndef _WIN32_WCE
    BOOL HiliteMenuItem(HWND hWnd, UINT uIDHiliteItem, UINT uHilite)

...

#else if (_ATL_VER >= 0x0800)
    int GetMenuItemCount() const
    {
        ATLASSERT(::IsMenu(m_hMenu));
        return ATL::GetMenuItemCount(m_hMenu);
    }

    UINT GetMenuItemID(int nPos) const
    {
        ATLASSERT(::IsMenu(m_hMenu));
        return ATL::GetMenuItemID(m_hMenu, nPos);
    }

    UINT GetMenuState(UINT nID, UINT nFlags) const
    {
        ATLASSERT(::IsMenu(m_hMenu));
        return ATL::GetMenuState(m_hMenu, nID, nFlags);
    }

    int GetMenuString(UINT nIDItem, LPTSTR lpString, int nMaxCount, UINT nFlags) const
    {
        ATLASSERT(::IsMenu(m_hMenu));
        return ATL::GetMenuStringW(m_hMenu, nIDItem, lpString, nMaxCount, nFlags);
    }
#endif // !_WIN32_WCE

...

#ifndef _WIN32_WCE
    BOOL InsertMenu(UINT nPosition, UINT nFlags, UINT_PTR nIDNewItem, HBITMAP hBmp)
    
...

#else if (_ATL_VER >= 0x0800)
    BOOL ModifyMenu(UINT nPosition, UINT nFlags, UINT_PTR nIDNewItem = 0, LPCTSTR lpszNewItem = NULL)
    {
        ATLASSERT(::IsMenu(m_hMenu));
        return ATL::ModifyMenuW(m_hMenu, nPosition, nFlags, nIDNewItem, lpszNewItem);
    }
#endif // !_WIN32_WCE

"Дистрибутив" WTL, содержащий также исправления проблем, описанных в [PRB] WTL 7.5 + WinCE + CString + no automatic namespaces
Автор: SchweinDeBurg
Дата: 08.12.05
и [PRB] WTL 7.5 + WinCE + _WTL_NO_AUTOMATIC_NAMESPACE
Автор: SchweinDeBurg
Дата: 08.12.05
, можно взять здесь (663 KB).
[ posted via RSDN@Home 1.1.4 stable SR1 r568, accompanied by silence ]
- Искренне ваш, Поросенок Пафнутий ~ ICQ#116846877
In Windows, there’s always a catch… © Paul DiLascia
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.