1 #include<windows.h> 2 #include "resource.h" 3 4 LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM); 5 6 int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstace, PSTR szCmdLine, int iCmdShow) 7 { 8 static TCHAR szAppName[] = TEXT ("Stick1"); 9 HWND hwnd; 10 MSG msg; 11 WNDCLASS wndclass; 12 13 wndclass.style = CS_HREDRAW | CS_VREDRAW ; 14 wndclass.lpfnWndProc = WndProc; 15 wndclass.cbClsExtra = 0; 16 wndclass.cbWndExtra = 0; 17 wndclass.hInstance = hInstance; 18 wndclass.hIcon = LoadIcon (NULL, IDI_APPLICATION); 19 wndclass.hCursor = LoadCursor(NULL, IDC_ARROW); 20 wndclass.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH); 21 wndclass.lpszMenuName = NULL; 22 wndclass.lpszClassName = szAppName; 23 24 if(!RegisterClass(&wndclass)) 25 { 26 MessageBox(NULL, TEXT ("The Program requires Windows NT!"), szAppName, MB_ICONERROR); 27 return 0; 28 } 29 30 hwnd = CreateWindow (szAppName, 31 TEXT ("Stick 1"), 32 WS_OVERLAPPEDWINDOW, 33 CW_USEDEFAULT, 34 CW_USEDEFAULT, 35 CW_USEDEFAULT, 36 CW_USEDEFAULT, 37 NULL, 38 NULL, 39 hInstance, 40 NULL); 41 42 ShowWindow(hwnd , iCmdShow); 43 UpdateWindow(hwnd); 44 45 while(GetMessage(&msg, NULL, 0, 0)) 46 { 47 TranslateMessage(&msg); 48 DispatchMessage(&msg); 49 } 50 return msg.wParam; 51 } 52 53 LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) 54 { 55 static HBITMAP hBitmap; 56 static int cxClient, cyClient, cxSource, cySource; 57 BITMAP bitmap; 58 HDC hdc,hdcMem; 59 HINSTANCE hInstance; 60 int x,y; 61 // PAINTSTRUCT ps; 62 63 64 switch(message) 65 { 66 case WM_CREATE: 67 hInstance = ((LPCREATESTRUCT) lParam) ->hInstance; 68 69 hBitmap = LoadBitmap(hInstance,MAKEINTRESOURCE(IDM_BITMAP)/*TEXT("bitmap1")*/); 70 GetObject(hBitmap,sizeof(BITMAP),&bitmap); 71 72 cxSource = bitmap.bmWidth; 73 cySource = bitmap.bmHeight; 74 75 return 0; 76 77 case WM_LBUTTONDOWN: 78 hdc = GetDC(hwnd); 79 80 hdcMem = CreateCompatibleDC(hdc); 81 SelectObject(hdcMem, hBitmap); 82 83 x = LOWORD(lParam); 84 y = HIWORD(lParam); 85 86 BitBlt(hdc, x, y, cxSource, cySource, hdcMem, 0, 0, SRCCOPY); 87 88 DeleteDC(hdcMem); 89 ReleaseDC(hwnd, hdc); 90 return 0; 91 case WM_DESTROY: 92 DeleteObject(hBitmap); 93 PostQuitMessage(0); 94 return 0; 95 } 96 return DefWindowProc(hwnd, message, wParam, lParam); 97 }