1 #include <Windows.h> 2 #include <tchar.h> 3 BOOLEAN InitWindowClass(HINSTANCE hInstance, int nCmdShow); 4 LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); 5 HFONT CreateFont(HDC hDC, int nCharHeight, BOOL bItalic); 6 int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) 7 { 8 MSG msg; 9 if (!InitWindowClass(hInstance, nCmdShow)) 10 { 11 MessageBox(NULL, L"創建窗口失敗!", _T("創建窗口"), NULL); 12 return 1; 13 } 14 while (GetMessage(&msg, NULL, 0, 0)) 15 { 16 TranslateMessage(&msg); 17 DispatchMessage(&msg); 18 } 19 return(int)msg.wParam; 20 } 21 LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) 22 { 23 HDC hDC; 24 HFONT hF; 25 PAINTSTRUCT ps; 26 TEXTMETRIC tm; 27 TCHAR str[] = L" Hello World "; 28 int i = 0; 29 static int x[13], y[13]; 30 static int color[13]; 31 POINT pt; 32 switch (message) 33 { 34 case WM_CREATE: 35 SetTimer(hWnd, 1111, 200, NULL); 36 GetCursorPos(&pt); 37 ScreenToClient(hWnd, &pt); 38 for (i = 0; i < 13; i++) 39 { 40 x[i] = pt.x + (i - 1) * 40; 41 y[i] = pt.y; 42 color[i] = 25 * (i - 1); 43 } 44 break; 45 case WM_PAINT: 46 hDC = BeginPaint(hWnd, &ps); 47 hF = CreateFont(hDC, 40, 0); 48 SelectObject(hDC, hF); 49 for (i = 12; i > 1; i--) 50 { 51 x[i] = x[i - 1] + 40; 52 y[i] = y[i - 1]; 53 } 54 GetCursorPos(&pt); 55 ScreenToClient(hWnd, &pt); 56 x[1] = pt.x; 57 y[1] = pt.y; 58 for (i = 1; i < 13; i++) 59 { 60 SetTextColor(hDC, RGB(255 - color[i], color[i], 255)); 61 TextOut(hDC, x[i], y[i], &str[i], 1); 62 } 63 color[1] = color[12]; 64 for (i = 12; i > 1; i--) 65 color[i] = color[i - 1]; 66 DeleteObject(hF); 67 EndPaint(hWnd, &ps); 68 break; 69 case WM_TIMER: 70 if (wParam == 1111) 71 InvalidateRect(hWnd, NULL, 1); 72 break; 73 case WM_DESTROY: 74 PostQuitMessage(0); 75 break; 76 default: 77 return DefWindowProc(hWnd, message, wParam, lParam); 78 break; 79 } 80 return 0; 81 } 82 BOOLEAN InitWindowClass(HINSTANCE hInstance, int nCmdShow) 83 { 84 WNDCLASSEX wcex; 85 HWND hWnd; 86 TCHAR szWindowClass[] = L"窗口示例"; 87 TCHAR szTitle[] = L"鼠標的應用示例"; 88 wcex.cbSize = sizeof(WNDCLASSEX); 89 wcex.style = 0; 90 wcex.lpfnWndProc = WndProc; 91 wcex.cbClsExtra = 0; 92 wcex.cbWndExtra = 0; 93 wcex.hInstance = hInstance; 94 wcex.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_APPLICATION)); 95 wcex.hCursor = LoadCursor(NULL, IDC_ARROW); 96 wcex.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH); 97 wcex.lpszMenuName = NULL; 98 wcex.lpszClassName = szWindowClass; 99 wcex.hIconSm = LoadIcon(wcex.hInstance, MAKEINTRESOURCE(IDI_APPLICATION)); 100 if (!RegisterClassEx(&wcex)) 101 return FALSE; 102 hWnd = CreateWindow( 103 szWindowClass, 104 szTitle, 105 WS_OVERLAPPEDWINDOW, 106 CW_USEDEFAULT, CW_USEDEFAULT, 107 CW_USEDEFAULT, CW_USEDEFAULT, 108 NULL, 109 NULL, 110 hInstance, 111 NULL 112 ); 113 if (!hWnd) 114 return FALSE; 115 ShowWindow(hWnd, nCmdShow); 116 UpdateWindow(hWnd); 117 return TRUE; 118 } 119 HFONT CreateFont(HDC hDC, int nCharHeight, BOOL bItalic) 120 { 121 HFONT hFont; 122 hFont = CreateFont( 123 nCharHeight, 124 0, 125 0, 126 0, 127 400, 128 bItalic, 129 0, 130 0, 131 ANSI_CHARSET, 132 OUT_DEFAULT_PRECIS, 133 CLIP_DEFAULT_PRECIS, 134 DEFAULT_QUALITY, 135 DEFAULT_PITCH | FF_DONTCARE, 136 L"Arial" 137 ); 138 if (hFont == NULL) 139 return NULL; 140 else 141 return hFont; 142 }
截圖看不出效果^-^