HCURSOR hWhiteCursor;
HCURSOR hBlackCursor;
LRESULT CALLBACK WinPro(HWND hWnd,UINT uMsg,WPARAM wParam,LPARAM lParam);
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow)
{
WNDCLASS wndClass;
wndClass.cbClsExtra = 0;
wndClass.cbWndExtra = 0;
wndClass.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
wndClass.hCursor = LoadCursor(NULL,IDC_ARROW);
wndClass.hIcon = LoadIcon(NULL,IDI_APPLICATION);
wndClass.hInstance = hInstance;
wndClass.lpfnWndProc = WinPro;
wndClass.lpszClassName = "ClassName";
wndClass.lpszMenuName = "MenuName";
wndClass.style = CS_HREDRAW | CS_VREDRAW;
if(!RegisterClass(&wndClass))
{
MessageBox(NULL,TEXT("註冊窗口失敗"),TEXT("註冊窗口"),MB_ICONERROR);
return 0;
}
hWhiteCursor = ::LoadCursor(hInstance, (LPCTSTR)IDC_CURSOR_WHITE); //加載圖標
hBlackCursor = ::LoadCursor(hInstance, (LPCTSTR)IDC_CURSOR_BLACK);
SetCursor(hWhiteCursor); //默認白色圖標
HWND hWnd;
hWnd = CreateWindow(TEXT("ClassName"),
TEXT("Test Windows"),
WS_OVERLAPPEDWINDOW,
0,0,600,460,
NULL,NULL,hInstance,NULL);
ShowWindow(hWnd,nCmdShow);
UpdateWindow(hWnd);
MSG msg;
while(GetMessage(&msg,NULL,0,0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
}
LRESULT CALLBACK WinPro(HWND hWnd,UINT uMsg,WPARAM wParam,LPARAM lParam)
{
static int type = 0;//type為1時,鼠標為黑色圍棋樣式。為2時,為白色圍棋樣式
PAINTSTRUCT ps;
switch(uMsg)
{
case WM_CREATE:
SetTimer(hWnd,1,1000,NULL);
break;
case WM_PAINT:
HDC hdc;
hdc = BeginPaint(hWnd,&ps);
TextOut(hdc,20,100,TEXT("每點擊鼠標左鍵壹次,鼠標樣式在 “黑色圍棋” 和 “白色圍棋” 樣式之間轉換"),strlen("每點擊鼠標左鍵壹次,鼠標樣式在 “黑色圍棋” 和 “白色圍棋” 樣式之間轉換"));
EndPaint(hWnd,&ps);
break;
case WM_LBUTTONDOWN:
if ((type = ++type % 2) == 0)
SetCursor(hWhiteCursor);
else
SetCursor(hBlackCursor);
break;
case WM_SETCURSOR: //屏蔽掉系統的消息
return 0;
case WM_DESTROY:
PostQuitMessage(0);
break;
}
return DefWindowProc(hWnd,uMsg,wParam,lParam);
}