VC++编程常见问题解答二十 问:如何改变默认的光标形状? 我试着将光标改变为其它的形状和颜色,但却没有变化. 答:在对话框/窗口/你需要的地方加上对WM_SETCURSOR消息的处理. BOOL MyDialog::OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message) { // TODO: Add your message handler code here and/or call default ::SetCursor(AfxGetApp()->LoadCursor(IDC_MYCURSOR)); return TRUE; //return CDialog::OnSetCursor(pWnd, nHitTest, message); } 你没有成功的原因是因为窗口类光标风格不能为NULL. 问:如何在线程中处理状态条? 在我的应用程序CWnd的继承中有指针指向状态条,用pStatusBar->SetPaneText(0,status,TRUE)在状态条上显示一些文本都很正常.但 在第二个线程中调用该函数却不行,出现hwnd警告. 答:当你传送一个CWnd的指针到另外一个线程时,m_hWnd将为空.我的办法是用 PostThreadMessage传送消息到状态条的父类,让它对状态条进行处理. 问:如何阻止WINDOWS关闭? 我有一个应用程序会不停地工作.当该程序正常运行时,该如何避免用户关掉系 统?是不是该用WM_QUERYENDSESSION. 答:是的,在你的主框架窗口类中使用. // in the class header afx_msg BOOL OnQueryEndSession( WPARAM wReserved, LPARAM lEndReason ); // in the Message Map ON_MESSAGE( WM_QUERYENDSESSION, OnQueryEndSession ) // in the class body BOOL CMainFrame::OnQueryEndSession( WPARAM wReserved, LPARAM lEndReason ) { if( lEndReason =3D=3D ENDSESSION_LOGOFF ) { // user is logging off else // Windows is going down return( bCanExit ); }