windows程序在现实方式上属于图形方式,和文字方式的显示,有显著的不同。
什么是设备句柄,如何获取
使用统一的数据结构表示某一设备,这个结构就是设备句柄。
源码
1 #include<Windows.h> 2 3 LRESULT CALLBACK WindProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam); 4 5 int WinMain(HINSTANCE hInst, HINSTANCE tmp, LPSTR szCmd, int nShow) 6 { 7 WNDCLASS WndClass; 8 TCHAR* ClassName = TEXT("MyClass"); 9 HWND hwnd; 10 MSG msg; 11 12 WndClass.cbClsExtra = 0; 13 WndClass.cbWndExtra = 0; 14 WndClass.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1); 15 WndClass.hCursor = LoadCursor(NULL, IDC_ARROW); 16 WndClass.hIcon = LoadIcon(NULL, IDI_APPLICATION); 17 WndClass.hInstance = hInst; 18 WndClass.lpfnWndProc = WindProc; 19 WndClass.lpszClassName = ClassName; 20 WndClass.lpszMenuName = NULL; 21 WndClass.style = CS_VREDRAW | CS_HREDRAW; 22 23 if (!RegisterClass(&WndClass)) 24 { 25 MessageBox(NULL, TEXT("Gegister Class Fail!!"), TEXT("error"), MB_OK); 26 return 0; 27 } 28 29 hwnd = CreateWindow(ClassName, TEXT("Hello"), WS_OVERLAPPEDWINDOW, 0, 0, CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, hInst, NULL); 30 if (hwnd == NULL) 31 { 32 MessageBox(NULL, TEXT("Create Window Fail!!"), TEXT("error"), MB_OK); 33 return 0; 34 } 35 ShowWindow(hwnd, nShow); 36 UpdateWindow(hwnd); 37 38 while (GetMessage(&msg,NULL,0,0)) 39 { 40 TranslateMessage(&msg); 41 DispatchMessage(&msg); 42 } 43 44 return 0; 45 } 46 47 LRESULT CALLBACK WindProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) 48 { 49 HDC hdc; 50 PAINTSTRUCT pt; 51 TCHAR* str = TEXT("hello"); 52 switch (message) 53 { 54 case WM_DESTROY: 55 PostQuitMessage(0);//发送WM_QUIT消息 56 return 0; 57 case WM_PAINT: 58 hdc = BeginPaint(hwnd, &pt); 59 TextOut(hdc, 0, 0, str, _tcslen(str)); 60 EndPaint(hwnd, &pt); 61 return 0; 62 default: 63 break; 64 } 65 66 return DefWindowProc(hwnd, message, wParam, lParam); 67 }