» »

MFC

MFC

MV ::

Del programa:

CDC* tabla;
tabla=GetDC();


Ko zaženem program in se premikam z miško po oknu bi rad, da bi se izpisovale koordinate trenutne pozicije miške v status bar.

Kako naj to naredim?
  • spremenil: MV ()

Kekec ::

OnMouse move lepo poklices GetCursorPosition pa je!
Ampak si omejen samo na svojo formo!

wintermute ::

Uhhh... tezko se bos naucil MFC preko foruma. Lahko bi vsaj povedal za kaksno aplikacijo gre. Ce uporabljas document/view arhitekturo, se to naredi takole:

1. V tvoj view (recimo CMyView) dodaj spremenljivko tipa CString:

class CMyView
{

// ...

private:
CString m_mousePos;

// ...
};

&nbsp
&nbsp
2. Dodaj razredu CMyView handler za WM_MOUSEMOVE (najlazje preko Class Viewa).
Implementacija naj bo:

void CMyView::OnMouseMove(UINT nFlags, CPoint point)
{
m_mousePos.Format("%d, %d", point.x, point.y);

CView::OnMouseMove(nFlags, point);
}

&nbsp
&nbsp
3. Status baru dodaj panel (vprasaj, ce ne ves kako). Recimo da mu das oznako (command ID)
ID_MOUSEPOS.

4. Dodaj razredu CMyView update handler.
Najprej vnos v message map:

BEGIN_MESSAGE_MAP(CMyView, CView)
// ...
ON_UPDATE_COMMAND_UI(ID_MOUSEPOS, OnUpdateMousePos)
END_MESSAGE_MAP()

&nbsp
&nbsp
Ustrezna deklaracija handlerja (das v CMyView header) je:

void OnUpdateMousePos(CCmdUI* pCmdUI);

&nbsp
&nbsp
Implementacija pa naj bo:

void CMyView::OnUpdateMousePos(CCmdUI* pCmdUI)
{
pCmdUI->Enable();
pCmdUI->SetText(m_mousePos);
}

&nbsp
&nbsp
To je to (ce nisem kaj pozabil).

MV ::

Deluje brez problemov.
Hvala za pomoč.


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

[c#] ukaz radirka

Oddelek: Programiranje
91093 (886) japol
»

[c#] Risanje z miško

Oddelek: Programiranje
221408 (1089) japol
»

[Silverlight 4] Omejeno premikanje elementov v canvasu

Oddelek: Programiranje
111198 (1078) xordie
»

[C++] preprosto risanje

Oddelek: Programiranje
71647 (1524) popec
»

Dreamweaver 4 -- help

Oddelek: Omrežja in internet
201273 (1127) Elemen_T

Več podobnih tem