CSpinButtonCtrl::SetPos32
От: Olorin  
Дата: 23.03.04 11:01
Оценка:
Подскажите плз. Во всех МСДНах, которых смотрел везде эта функция описана, а когда я ее пытаюсь вызвать мне сообщают, что такого метода нет. И действительно если смотреть AFXCMN.H, то там есть все, описанные в МСДН методы, КРОМЕ этого. Никто не сталкивался...

23.03.04 14:22: Перенесено модератором из 'C/C++' — OE
Re: CSpinButtonCtrl::SetPos32
От: Odi$$ey Россия http://malgarr.blogspot.com/
Дата: 23.03.04 11:28
Оценка:
Здравствуйте, Olorin, Вы писали:

O>Подскажите плз. Во всех МСДНах, которых смотрел везде эта функция описана, а когда я ее пытаюсь вызвать мне сообщают, что такого метода нет. И действительно если смотреть AFXCMN.H, то там есть все, описанные в МСДН методы, КРОМЕ этого. Никто не сталкивался...


заглядываем в afxcmn.h и видим —

class CSpinButtonCtrl : public CWnd
{
   .....
#if _WIN32_IE >= 0x0500
        int GetPos32(LPBOOL lpbError = NULL) const;
        int SetPos32(int nPos);
#endif
   .....
}
Re[2]: CSpinButtonCtrl::SetPos32
От: Olorin  
Дата: 23.03.04 11:48
Оценка:
Здравствуйте, 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-ая студия, или какой-то другой набор библиотек.
У меня:

class CSpinButtonCtrl : public CWnd
{
    DECLARE_DYNAMIC(CSpinButtonCtrl)

// Constructors
public:
    CSpinButtonCtrl();
    BOOL Create(DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID);

// Attributes
    BOOL SetAccel(int nAccel, UDACCEL* pAccel);
    UINT GetAccel(int nAccel, UDACCEL* pAccel) const;
    int SetBase(int nBase);
    UINT GetBase() const;
    CWnd* SetBuddy(CWnd* pWndBuddy);
    CWnd* GetBuddy() const;
    int SetPos(int nPos);
    int GetPos() const;
    void SetRange(int nLower, int nUpper);
    void SetRange32(int nLower, int nUpper);
    DWORD GetRange() const;
    void GetRange(int &lower, int& upper) const;
    void GetRange32(int &lower, int& upper) const;

// Implementation
public:
    virtual ~CSpinButtonCtrl();
};
Re[3]: CSpinButtonCtrl::SetPos32
От: Odi$$ey Россия http://malgarr.blogspot.com/
Дата: 23.03.04 12:00
Оценка:
Здравствуйте, Olorin, Вы писали:

O>Странно, но у меня afxcmn.h немножко другой. Возможно у Вас 7-ая студия, или какой-то другой набор библиотек.


да, 7.1. Значит в MFC4.2 таких методов просто нет. А в каком MSDN смотришь? может он просто новее чем 6-я студия.
Re[4]: CSpinButtonCtrl::SetPos32
От: Olorin  
Дата: 23.03.04 12:04
Оценка:
Здравствуйте, Odi$$ey, Вы писали:

OE>Здравствуйте, Olorin, Вы писали:


O>>Странно, но у меня afxcmn.h немножко другой. Возможно у Вас 7-ая студия, или какой-то другой набор библиотек.


OE>да, 7.1. Значит в MFC4.2 таких методов просто нет. А в каком MSDN смотришь? может он просто новее чем 6-я студия.


Я смотрел в инетовском и в 2002(октябрь) Так что скорее всего действительно дело в болле старой версии MFC. То есть единственное реальное решение для меня это поставить студию 7.1?
Re[5]: CSpinButtonCtrl::SetPos32
От: Odi$$ey Россия http://malgarr.blogspot.com/
Дата: 23.03.04 12:13
Оценка:
Здравствуйте, 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 used
                return (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
Re[6]: CSpinButtonCtrl::SetPos32
От: Olorin  
Дата: 23.03.04 13:59
Оценка:
Здравствуйте, 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 у меня нет...
Re[7]: CSpinButtonCtrl::SetPos32
От: Odi$$ey Россия http://malgarr.blogspot.com/
Дата: 23.03.04 14:13
Оценка:
Здравствуйте, Olorin, Вы писали:

O>Простите, если отвлекаю, но я не совсем понял, как я могу это сделать, какого вида сообщение мне нужно посылать. Просто идентификатора UDM_SETPOS32 у меня нет...


надо ставить Platform SDK поновее
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.