#include <windows.h> #define TITLE TEXT("Kitty on your lap") LRESULT CALLBACK WndProc(HWND hWnd , UINT msg , WPARAM wp , LPARAM lp) { HDC hdc; PAINTSTRUCT ps; TEXTMETRIC tm; switch (msg) { case WM_DESTROY: PostQuitMessage(0); return 0; case WM_PAINT: hdc = BeginPaint(hWnd , &ps); GetTextMetrics(hdc , &tm); TextOut(hdc , 100 , tm.tmHeight , TITLE , lstrlen(TITLE)); SetMapMode(hdc , MM_LOMETRIC); TextOut(hdc , 100 , 0 , TITLE , lstrlen(TITLE)); EndPaint(hWnd , &ps); return 0; } return DefWindowProc(hWnd , msg , wp , lp); } int WINAPI WinMain(HINSTANCE hInstance , HINSTANCE hPrevInstance , PSTR lpCmdLine , int nCmdShow) { HWND hWnd; MSG msg; WNDCLASS winc; winc.style = CS_HREDRAW | CS_VREDRAW; winc.lpfnWndProc = WndProc; winc.cbClsExtra = winc.cbWndExtra = 0; winc.hInstance = hInstance; winc.hIcon = LoadIcon(NULL , IDI_APPLICATION); winc.hCursor = LoadCursor(NULL , IDC_ARROW); winc.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH); winc.lpszMenuName = NULL; winc.lpszClassName = TEXT("KITTY"); if (!RegisterClass(&winc)) return 1; hWnd = CreateWindow( TEXT("KITTY") , TITLE , WS_OVERLAPPEDWINDOW | WS_VISIBLE , CW_USEDEFAULT , CW_USEDEFAULT , CW_USEDEFAULT , CW_USEDEFAULT , NULL , NULL , hInstance , NULL ); if (hWnd == NULL) return 1; while (GetMessage(&msg , NULL , 0 , 0 )) { TranslateMessage(&msg); DispatchMessage(&msg); } return msg.wParam; }
#include <windows.h> #define TITLE TEXT("Kitty on your lap") #define MES TEXT("論理座標 X = %dmm , Y = %dmm\n物理座標 X = %dpx , Y = %dpx") LRESULT CALLBACK WndProc(HWND hWnd , UINT msg , WPARAM wp , LPARAM lp) { HDC hdc; PAINTSTRUCT ps; POINT poLP , poDP; RECT rect; TCHAR str[1024]; switch (msg) { case WM_DESTROY: PostQuitMessage(0); return 0; case WM_NCHITTEST: InvalidateRect(hWnd , NULL , TRUE); break; case WM_PAINT: hdc = BeginPaint(hWnd , &ps); GetCursorPos(&poDP); poLP = poDP; GetClientRect(hWnd , &rect); SetMapMode(hdc , MM_LOMETRIC); DPtoLP(hdc , &poLP , 1); SetMapMode(hdc , MM_TEXT); wsprintf(str , MES , poLP.x / 10 , poLP.y / 10 , poDP.x , poDP.y); DrawText(hdc , str , -1 , &rect , DT_LEFT); EndPaint(hWnd , &ps); return 0; } return DefWindowProc(hWnd , msg , wp , lp); } int WINAPI WinMain(HINSTANCE hInstance , HINSTANCE hPrevInstance , PSTR lpCmdLine , int nCmdShow) { HWND hWnd; MSG msg; WNDCLASS winc; winc.style = CS_HREDRAW | CS_VREDRAW; winc.lpfnWndProc = WndProc; winc.cbClsExtra = winc.cbWndExtra = 0; winc.hInstance = hInstance; winc.hIcon = LoadIcon(NULL , IDI_APPLICATION); winc.hCursor = LoadCursor(NULL , IDC_ARROW); winc.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH); winc.lpszMenuName = NULL; winc.lpszClassName = TEXT("KITTY"); if (!RegisterClass(&winc)) return 1; hWnd = CreateWindow( TEXT("KITTY") , TITLE , WS_OVERLAPPEDWINDOW | WS_VISIBLE , CW_USEDEFAULT , CW_USEDEFAULT , CW_USEDEFAULT , CW_USEDEFAULT , NULL , NULL , hInstance , NULL ); if (hWnd == NULL) return 1; while (GetMessage(&msg , NULL , 0 , 0 )) { TranslateMessage(&msg); DispatchMessage(&msg); } return msg.wParam; }
#include <windows.h> #define TITLE TEXT("Kitty on your lap") LRESULT CALLBACK WndProc(HWND hWnd , UINT msg , WPARAM wp , LPARAM lp) { HDC hdc; PAINTSTRUCT ps; switch (msg) { case WM_DESTROY: PostQuitMessage(0); return 0; case WM_PAINT: hdc = BeginPaint(hWnd , &ps); SetViewportOrgEx(hdc , 100 , 50 , NULL); TextOut(hdc , 0 , 0 , TITLE , lstrlen(TITLE)); EndPaint(hWnd , &ps); return 0; } return DefWindowProc(hWnd , msg , wp , lp); } int WINAPI WinMain(HINSTANCE hInstance , HINSTANCE hPrevInstance , PSTR lpCmdLine , int nCmdShow) { HWND hWnd; MSG msg; WNDCLASS winc; winc.style = CS_HREDRAW | CS_VREDRAW; winc.lpfnWndProc = WndProc; winc.cbClsExtra = winc.cbWndExtra = 0; winc.hInstance = hInstance; winc.hIcon = LoadIcon(NULL , IDI_APPLICATION); winc.hCursor = LoadCursor(NULL , IDC_ARROW); winc.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH); winc.lpszMenuName = NULL; winc.lpszClassName = TEXT("KITTY"); if (!RegisterClass(&winc)) return 1; hWnd = CreateWindow( TEXT("KITTY") , TITLE , WS_OVERLAPPEDWINDOW | WS_VISIBLE , CW_USEDEFAULT , CW_USEDEFAULT , CW_USEDEFAULT , CW_USEDEFAULT , NULL , NULL , hInstance , NULL ); if (hWnd == NULL) return 1; while (GetMessage(&msg , NULL , 0 , 0 )) { TranslateMessage(&msg); DispatchMessage(&msg); } return msg.wParam; }
定数 | 解説 |
---|---|
MM_ANISOTROPIC | 論理単位は、任意にスケーリングされた軸上の任意の単位にマップされます 単位、向き、スケーリングを指定するには SetWindowExtEx() と SetViewportExtEx() を使います |
MM_HIENGLISH | 各論理単位は、0.001 インチにマップされます x の値は右に、y の値は上に向かって増加します |
MM_HIMETRIC | 各論理単位は、0.01 ミリメートルにマップされます x の値は右に、y の値は上に向かって増加します |
MM_ISOTROPIC | 論理単位は、等しくスケーリングされた軸上の任意の単位にマップされます すなわち、X 軸方向の 1 単位は、Y 軸方向の 1 単位と同じになります 単位と向きを指定するには、SetWindowExtEx() と SetViewportExtEx () を使います GDI は、必要に応じて x 単位と y 単位のサイズが同一になるように調整を行います |
MM_LOENGLISH | 各論理単位は、0.01 インチにマップされます x の値は右に、y の値は上に向かって増加します |
MM_LOMETRIC | 各論理単位は、0.1 ミリにマップされます x の値は右に、y の値は上に向かって増加します |
MM_TEXT | 各論理単位は、1 デバイスピクセルにマップされます x の値は右に、y の値は下に向かって増加します |
MM_TWIPS | 各論理単位は、ポイント数の 20 分の 1 にマップされます (1/1440 インチ、“twip”とも呼ばれます) x の値は右に、y の値は上に向かって増加します |