前边已经说过如何加载光标与图标,现在就再进一步说明一下如何动态设置光标与图标:
以下是核心代码(完整工程下载)
.if eax==WM_CREATE invoke _CreatePopMenu mov hPopMenu,eax invoke LoadIcon,hInstance,IDI_ICO1 mov hIco1,eax invoke LoadIcon,hInstance,IDI_ICO2 mov hIco2,eax invoke LoadCursor,hInstance,IDC_CUR1 mov hCur1,eax invoke LoadCursor,hInstance,IDC_CUR2 mov hCur2,eax .elseif eax==WM_RBUTTONDOWN invoke GetCursorPos,addr @stPos invoke TrackPopupMenu,hPopMenu,TPM_LEFTALIGN,@stPos.x,@stPos.y,NULL,hWnd,NULL .elseif eax==WM_COMMAND mov eax,wParam movzx eax,ax .if eax==IDM_ICO1 invoke SendMessage,hWnd,WM_SETICON,ICON_SMALL,hIco1 invoke CheckMenuRadioItem,hPopMenu,IDM_ICO1,IDM_ICO2,IDM_ICO1,MF_BYCOMMAND .elseif eax==IDM_ICO2 invoke SendMessage,hWnd,WM_SETICON,ICON_SMALL,hIco2 invoke CheckMenuRadioItem,hPopMenu,IDM_ICO1,IDM_ICO2,IDM_ICO2,MF_BYCOMMAND .elseif eax==IDM_CUR1 invoke SetClassLong,hWnd,GCL_HCURSOR,hCur1 invoke CheckMenuRadioItem,hPopMenu,IDM_CUR1,IDM_CUR2,IDM_CUR1,MF_BYCOMMAND .elseif eax==IDM_CUR2 invoke SetClassLong,hWnd,GCL_HCURSOR,hCur2 invoke CheckMenuRadioItem,hPopMenu,IDM_CUR1,IDM_CUR2,IDM_CUR2,MF_BYCOMMAND .endif