Подскажите плз. Во всех МСДНах, которых смотрел везде эта функция описана, а когда я ее пытаюсь вызвать мне сообщают, что такого метода нет. И действительно если смотреть AFXCMN.H, то там есть все, описанные в МСДН методы, КРОМЕ этого. Никто не сталкивался...
23.03.04 14:22: Перенесено модератором из 'C/C++' — OE
Здравствуйте, Olorin, Вы писали:
O>Подскажите плз. Во всех МСДНах, которых смотрел везде эта функция описана, а когда я ее пытаюсь вызвать мне сообщают, что такого метода нет. И действительно если смотреть AFXCMN.H, то там есть все, описанные в МСДН методы, КРОМЕ этого. Никто не сталкивался...
заглядываем в afxcmn.h и видим —
class CSpinButtonCtrl : public CWnd
{
.....
#if _WIN32_IE >= 0x0500int GetPos32(LPBOOL lpbError = NULL) const;
int SetPos32(int nPos);
#endif
.....
}
Здравствуйте, Odi$$ey, Вы писали:
OE>Здравствуйте, Olorin, Вы писали:
O>>Подскажите плз. Во всех МСДНах, которых смотрел везде эта функция описана, а когда я ее пытаюсь вызвать мне сообщают, что такого метода нет. И действительно если смотреть AFXCMN.H, то там есть все, описанные в МСДН методы, КРОМЕ этого. Никто не сталкивался...
OE>заглядываем в afxcmn.h и видим -
OE>
OE>class CSpinButtonCtrl : public CWnd
OE>{
OE> .....
OE>#if _WIN32_IE >= 0x0500
OE> int GetPos32(LPBOOL lpbError = NULL) const;
OE> int SetPos32(int nPos);
OE>#endif
OE> .....
OE>}
OE>
Странно, но у меня afxcmn.h немножко другой. Возможно у Вас 7-ая студия, или какой-то другой набор библиотек.
У меня:
Здравствуйте, Odi$$ey, Вы писали:
OE>Здравствуйте, Olorin, Вы писали:
O>>Странно, но у меня afxcmn.h немножко другой. Возможно у Вас 7-ая студия, или какой-то другой набор библиотек.
OE>да, 7.1. Значит в MFC4.2 таких методов просто нет. А в каком MSDN смотришь? может он просто новее чем 6-я студия.
Я смотрел в инетовском и в 2002(октябрь) Так что скорее всего действительно дело в болле старой версии MFC. То есть единственное реальное решение для меня это поставить студию 7.1?
Здравствуйте, Olorin, Вы писали:
O>Я смотрел в инетовском и в 2002(октябрь) Так что скорее всего действительно дело в болле старой версии MFC. То есть единственное реальное решение для меня это поставить студию 7.1?
не обязательно, можно просто слать его окошку соответствующие сообщения, за примером лезем в исходники WTL:
#if (_WIN32_IE >= 0x0500) && !defined(_WIN32_WCE)
int GetPos32(LPBOOL lpbError = NULL) const
{
ATLASSERT(::IsWindow(m_hWnd));
// Note: Seems that Windows always sets error to TRUE if
// UDS_SETBUDDYINT style is not usedreturn (int)::SendMessage(m_hWnd, UDM_GETPOS32, 0, (LPARAM)lpbError);
}
int SetPos32(int nPos)
{
ATLASSERT(::IsWindow(m_hWnd));
return (int)::SendMessage(m_hWnd, UDM_SETPOS32, 0, (LPARAM)nPos);
}
#endif//(_WIN32_IE >= 0x0500) && !defined(_WIN32_WCE)
обрати внимание на _WIN32_IE >= 0x0500 — собственно spin-контрол поддерживает эту фишку начиная с IE5
Здравствуйте, Odi$$ey, Вы писали:
OE>Здравствуйте, Olorin, Вы писали:
O>>Я смотрел в инетовском и в 2002(октябрь) Так что скорее всего действительно дело в болле старой версии MFC. То есть единственное реальное решение для меня это поставить студию 7.1?
OE>не обязательно, можно просто слать его окошку соответствующие сообщения, за примером лезем в исходники WTL:
OE>
OE>#if (_WIN32_IE >= 0x0500) && !defined(_WIN32_WCE)
OE> int GetPos32(LPBOOL lpbError = NULL) const
OE> {
OE> ATLASSERT(::IsWindow(m_hWnd));
OE> // Note: Seems that Windows always sets error to TRUE if
OE> // UDS_SETBUDDYINT style is not used
OE> return (int)::SendMessage(m_hWnd, UDM_GETPOS32, 0, (LPARAM)lpbError);
OE> }
OE> int SetPos32(int nPos)
OE> {
OE> ATLASSERT(::IsWindow(m_hWnd));
OE> return (int)::SendMessage(m_hWnd, UDM_SETPOS32, 0, (LPARAM)nPos);
OE> }
OE>#endif//(_WIN32_IE >= 0x0500) && !defined(_WIN32_WCE)
OE>
OE>обрати внимание на _WIN32_IE >= 0x0500 — собственно spin-контрол поддерживает эту фишку начиная с IE5
Простите, если отвлекаю, но я не совсем понял, как я могу это сделать, какого вида сообщение мне нужно посылать. Просто идентификатора UDM_SETPOS32 у меня нет...
Здравствуйте, Olorin, Вы писали:
O>Простите, если отвлекаю, но я не совсем понял, как я могу это сделать, какого вида сообщение мне нужно посылать. Просто идентификатора UDM_SETPOS32 у меня нет...