[英]Can't change the cursor (from inside OnSetCursor)
我正在嘗試通過處理OnSetCursor
來更改CStatic
派生類中的OnSetCursor
class CMyStatic : public CStatic
{
// ....
};
BEGIN_MESSAGE_MAP(CMyStatic, CStatic)
ON_WM_SETCURSOR()
END_MESSAGE_MAP()
BOOL CMyStatic::OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message)
{
TRACE(_T("OnSetCursor\n"));
SetCursor(AfxGetApp()->LoadStandardCursor(IDC_CROSS));
return TRUE;
}
每次我移動鼠標都會調用OnSetCursor
,但是光標不會更改。 我究竟做錯了什么?
使用:: SetCursor。 或者,您可以在其他任何地方調用一次SetCursor,而不捕獲WM_SETCURSOR,光標將自動設置。
您使用的CWnd :: SetCursor用於為窗口設置光標,如果您不覆蓋OnSetCursor,則將使用該光標。 也就是說,OnSetCursor的默認行為是通過調用CWnd :: SetCursor來調用帶有設置的光標的:: SetCursor。
在這種情況下,您不需要(或不想)使用MAKEINTRESOURCE
,因此請更改:
SetCursor(AfxGetApp()->LoadStandardCursor(MAKEINTRESOURCE(IDC_CROSS)));
至:
SetCursor(AfxGetApp()->LoadStandardCursor(IDC_CROSS));
m_hHandCursor = LoadCursor(NULL ,MAKEINTRESOURCE(IDC_HAND));
將m_hHandCursor設置為成員變量,然后使用OnInitDialog中的win32 API LoadCursor進行初始化。...然后,OnSetCursor()事件始終使用SetCursor API設置此光標。...因此,您的應用程序將始終獲取系統定義的HAND光標
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.