Its kind of confusing what you are doing. If you want to set the cursor
all in view's OnSetCursor. OnSetCursor is called automatically whenever
there is a mouse move so you dont have to call it explicitly.
Thanks, Ajay. My description was somewhat misleading. OnNextActivity
doesn't actually call SetCursor, but it makes a call that creates the
activity, which then uses SetCursor.
I followed your advice:
BOOL CMainFrame::OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message)
{
// TODO: Add your message handler code here and/or call default
CRoom101View* pView = (CRoom101View*)GetActiveView();
CActivity* act = pView->m_pAct;
pView->SetCursorTo(act->GetCursor() );
::Beep(500,50);
return CFrameWnd::OnSetCursor(pWnd, nHitTest, message);
}
But OnSetCursor is not being triggered when I move the mouse over the
non-client area, unless I leave the window and then return. I would
appreciate further comment.
------------
"Ajay Kalra" <ajaykalra@yahoo.com> wrote in message
news:A6F434C4-70CB-4262-A454-1195F7266C05@microsoft.com...
Try setting the cursor in OnSetCursor instead of in OnNextActivity. In
OnNextActivity, put a flag which will know that the cursor needs to be
changed.
---
Ajay
"SteveR" <srussell@removethisinnernet.net> wrote in message
news:u4OS1xA9HHA.1936@TK2MSFTNGP06.phx.gbl...
I have a dialog that opens with dlg.DoModal(). I close it by clicking
on one of two buttons, both of which do essentially the same thing:
CMainFrame* main = (CMainFrame*)AfxGetMainWnd();
CRoom101View* pView = (CRoom101View*) main->GetActiveView();
// now go to the lesson button screen
pView->PostMessage(WM_NEXTACTIVITY, 888);
CDialog::OnCancel();
That view::OnNextActivity call results in a call to SetCursor:
::SetCursor(AfxGetApp()->LoadCursor(m_uCurrentCursor) );
After the dialog closes, I get the custom cursor I'm expecting over my
view, but apparently due to the PostMessage, the cursor will not
revert to the standard Windows cursor when I move it over the
non-client area, i.e. title bar, until I click on the window. What do
I need to do?