#author("2017-09-11T09:18:44+09:00","default:Authors","Authors")
''[[FrontPage]]''
* 動作テスト [#d9303ff9]
ちょっとした挙動のテスト等のために。

*** 特記事項 [#uec9af9e]
~
*** winTest.cpp [#kc2b7aa7]
 #define _WIN32_WINNT 0x0501

 #include <windows.h>
 #include <commctrl.h>
 #include "resource.h"

 #pragma comment(lib, "comctl32.lib")      // レバーコントロールの作成に必要

 #define IDM_ABOUT 104
 #define IDM_EXIT 105
 #define IDC_HP 109
 #define ID_COOL 150
 #define ID_BUTTON1 151
 #define ID_BUTTON2 152
 #define IDC_BUTTON1 161
 #define IDC_BUTTON2 162
                                                                 //                                                //
 // このコード モジュールに含まれる関数の宣言を転送します:
 ATOM MyRegisterClass(HINSTANCE hInstance);
 BOOL InitInstance(HINSTANCE, int);
 LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);

 int APIENTRY WinMain(HINSTANCE hInstance,
                      HINSTANCE hPrevInstance,
                      LPSTR lpCmdLine,
                      int nCmdShow)
 {
     MSG msg;
     MyRegisterClass(hInstance);

     // アプリケーションの初期化を実行します:
     if (!InitInstance (hInstance, nCmdShow))
     {
         return FALSE;
     }
     // メイン メッセージ ループ:
     while (GetMessage(&msg, NULL, 0, 0))
     {
         TranslateMessage(&msg);
         DispatchMessage(&msg);
     }
     return (int) msg.wParam;
 }

 //
 //  関数: MyRegisterClass()
 //
 //  目的: ウィンドウ クラスを登録します。
 //
 ATOM MyRegisterClass(HINSTANCE hInstance)
 {
     WNDCLASSEX wcex;

     wcex.cbSize = sizeof(WNDCLASSEX);

     wcex.style = CS_HREDRAW | CS_VREDRAW;
     wcex.lpfnWndProc = WndProc;
     wcex.cbClsExtra = 0;
     wcex.cbWndExtra = 0;
     wcex.hInstance = hInstance;
     wcex.hIcon = LoadIcon(NULL , IDI_APPLICATION);
     wcex.hCursor = LoadCursor(NULL, IDC_ARROW);
     wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
 //    wcex.lpszMenuName = MAKEINTRESOURCE(IDC_HP);
     wcex.lpszMenuName = NULL;
     wcex.lpszClassName = TEXT("HP");
     wcex.hIconSm = LoadIcon(NULL , IDI_APPLICATION);

     return RegisterClassEx(&wcex);
 }

 //
 //   関数: InitInstance(HINSTANCE, int)
 //
 //   目的: メイン ウィンドウを作成します。
 //
 BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)
 {
    HWND hWnd;

    hWnd = CreateWindow(TEXT("HP"), TEXT("HP"), WS_OVERLAPPEDWINDOW,
       CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, NULL, NULL, hInstance, NULL);

    if (!hWnd)
    {
       return FALSE;
    }

    ShowWindow(hWnd, nCmdShow);
    UpdateWindow(hWnd);

    return TRUE;
 }

 //
 //  関数: WndProc(HWND, UINT, WPARAM, LPARAM)
 //
 //  目的:  メイン ウィンドウのメッセージを処理します。
 //
 //  WM_CREATE  - ウインドウ作成時の処理
 //  WM_SIZE    - ウインドウサイズ変更時の処理
 //  WM_COMMAND - アプリケーション メニューの処理
 //  WM_DESTROY - 中止メッセージを表示して戻る
 //
 //
 LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
 {
     int wmId, wmEvent;
     static HWND hRebar;       // レバーコントロールのハンドル
     RECT Rect;                // RECT構造体
     INITCOMMONCONTROLSEX ic;  // INITCOMMONCONTROLSEX構造体
     REBARBANDINFO rbBand;     // REBARBANDINFO構造体

     switch (message)
     {
         case WM_CREATE:
        
             //コモンコントロールの初期化  
             ic.dwICC = ICC_COOL_CLASSES;
             ic.dwSize = sizeof(INITCOMMONCONTROLSEX); 
             InitCommonControlsEx(&ic); 

             //レバーコントロールの作成
             hRebar = CreateWindowEx(0,REBARCLASSNAME,TEXT(""),
 //                      WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS |WS_CLIPCHILDREN | CCS_NODIVIDER,
                                         WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN | //  スタイル  //
                                         RBS_BANDBORDERS | WS_CLIPCHILDREN  | CCS_NODIVIDER, //                    //
 //                      0, 0, 0, 0,
                       20, 20, 60, 60, 
 //                      hWnd, (HMENU)ID_COOL,
                       hWnd, NULL,
                       (HINSTANCE)GetWindowLong(hWnd, GWLP_HINSTANCE), NULL);

             // REBARBANDINFO構造体
             ZeroMemory(&rbBand, sizeof(REBARBANDINFO)); 
             // 構造体のサイズ
             rbBand.cbSize = sizeof(REBARBANDINFO);
             // マスクフラグ
             rbBand.fMask = RBBIM_STYLE | RBBIM_CHILD | RBBIM_CHILDSIZE | RBBIM_SIZE;
             // バンドのスタイルフラグ
             rbBand.fStyle = RBBS_CHILDEDGE;   
             // 最小値の高さ
             rbBand.cyMinChild = 30;
             // 最小値の幅
             rbBand.cxMinChild = 100;
             // レバーコントロールにのせる対象の子ウインドウのハンドル
             rbBand.hwndChild = CreateWindowEx(0, TEXT("BUTTON"), TEXT("Button1"),
                                  WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON,
                                  0, 0, 0, 0,
                                  hRebar, (HMENU)ID_BUTTON1, 
                                  (HINSTANCE)GetWindowLong(hWnd, GWL_HINSTANCE) ,NULL);
             // レバーコントロールにボタン1を挿入 
             SendMessage(hRebar, RB_INSERTBAND, (WPARAM)-1, (LPARAM)&rbBand);

             // レバーコントロールにボタン2を挿入
             rbBand.hwndChild = CreateWindowEx(0, TEXT("BUTTON"), TEXT("Button2"),
                                  WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON,
                                  0, 0, 0, 100,
                                  hRebar, (HMENU)ID_BUTTON2, 
                                  (HINSTANCE)GetWindowLong(hWnd, GWL_HINSTANCE), NULL); 
             GetClientRect(hRebar, &Rect);
             rbBand.cx = Rect.right - 100;
             SendMessage(hRebar, RB_INSERTBAND, (WPARAM)-1, (LPARAM)&rbBand);
             break;

         case WM_SIZE:
             SendMessage(hRebar, WM_SIZE, wParam, lParam);
             break;

         case WM_COMMAND:
             wmId = LOWORD(wParam);
             wmEvent = HIWORD(wParam);
             // 選択されたメニューの解析:
             switch (wmId)
             {
                 case IDM_EXIT:
                     DestroyWindow(hWnd);
                     break;
                 default:
                     return DefWindowProc(hWnd, message, wParam, lParam);
             }
             break;

         case WM_DESTROY:
             PostQuitMessage(0);
             break;
         default:
             return DefWindowProc(hWnd, message, wParam, lParam);
     }
     return 0;
 }

*** 修正履歴 [#scd59814]
~
*** 課題 [#mae1ae3c]
~

*** 備考 [#ud7d6d0c]
~

*** 参考リンク [#d21fdff0]
~



トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS