「C言語/C++/WorkArea」の編集履歴(バックアップ)一覧はこちら

C言語/C++/WorkArea」(2012/11/19 (月) 17:59:55) の最新版変更点

追加された行は緑色になります。

削除された行は赤色になります。

|開発環境|Microsoft Visual C++ 2010 Express (SP1)| |実行環境|Microsoft Windows XP Home Edition (SP3)| |プロジェクトの種類|Win32 プロジェクト| |プロジェクト名|WorkArea| |アプリケーションの種類|Windows アプリケーション| |追加のオプション|空のプロジェクト| |文字セット|Unicode| WorkArea.c #highlight(c){{ // Unicode #include <Windows.h> #include <stdio.h> #define APP_NAME TEXT("WorkArea") // 関数プロトタイプ宣言 void Trace(LPCTSTR format, ...); LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam); void OnPaint(HWND hWnd); void OnCreate(HWND hWnd); //============================================================================== int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { WNDCLASSEX wcx; HWND hWnd; MSG msg; // ウィンドウクラスの登録 ZeroMemory(&wcx, sizeof wcx); wcx.cbSize = sizeof wcx; wcx.style = CS_HREDRAW | CS_VREDRAW; wcx.lpfnWndProc = WndProc; wcx.hInstance = hInstance; wcx.hCursor = LoadCursor(NULL, MAKEINTRESOURCE(IDC_ARROW)); wcx.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1); wcx.lpszClassName = APP_NAME; if (RegisterClassEx(&wcx) == 0) { return 0; } // ウィンドウの作成 hWnd = CreateWindow( APP_NAME, APP_NAME, WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, NULL, NULL, hInstance, NULL); if (hWnd == NULL) { return 0; } ShowWindow(hWnd, nCmdShow); UpdateWindow(hWnd); // メッセージループ while (GetMessage(&msg, NULL, 0, 0)) { TranslateMessage(&msg); DispatchMessage(&msg); } return msg.wParam; } //------------------------------------------------------------------------------ void Trace(LPCTSTR format, ...) { va_list arg_ptr; TCHAR buffer[256]; int size; va_start(arg_ptr, format); size = _vsnwprintf_s(buffer, _countof(buffer), _TRUNCATE, format, arg_ptr); va_end(arg_ptr); OutputDebugString(buffer); if (size < 0) { OutputDebugString(TEXT("...\n")); } } //------------------------------------------------------------------------------ LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { switch (uMsg) { case WM_PAINT: OnPaint(hWnd); return 0; case WM_CREATE: OnCreate(hWnd); return 0; case WM_DESTROY: PostQuitMessage(0); return 0; } return DefWindowProc(hWnd, uMsg, wParam, lParam); } //------------------------------------------------------------------------------ void OnPaint(HWND hWnd) { TCHAR str[] = TEXT("hello, world"); PAINTSTRUCT ps; HDC hdc = BeginPaint(hWnd, &ps); TextOut(hdc, 0, 0, str, wcslen(str)); EndPaint(hWnd, &ps); } //------------------------------------------------------------------------------ void OnCreate(HWND hWnd) { int cx, cy; RECT rc; cx = GetSystemMetrics(SM_CXSCREEN); cy = GetSystemMetrics(SM_CYSCREEN); Trace(L"CX:%d CY:%d\n", cx, cy); GetWindowRect(GetDesktopWindow(), &rc); Trace(L"Desktop L:%d T:%d R:%d B:%d\n", rc.left, rc.top, rc.right, rc.bottom); SystemParametersInfo(SPI_GETWORKAREA, 0, &rc, 0); Trace(L"WorkArea L:%d T:%d R:%d B:%d\n", rc.left, rc.top, rc.right, rc.bottom); SetWindowPos(hWnd, NULL, 0, 0, rc.right, rc.bottom, SWP_NOZORDER); } }} 出力 CX:1920 CY:1200 Desktop L:0 T:0 R:1920 B:1200 WorkArea L:0 T:0 R:1920 B:1170

表示オプション

横に並べて表示:
変化行の前後のみ表示: