OriosのActiveBasic講座(2-1): ウィンドウパーツ

2.スタティック(ラベル)ウィンドウ

a.イントロダクション

前回はスケルトンウィンドウ、つまり何も飾りのないウィンドウを作りましたが、実際のウィンドウプログラムではそのウィンドウにボタンなどの飾りを付けていきます。 そこで、今回は最も基本な飾りである「スタティック(ラベル)ウィンドウ」を学習したいと思います。 「スタティックウィンドウ」というのは、要は文字のことです。

今回作るプログラムは、下のように始めは文字が表示されていて、ウィンドウをクリックするとその文字が変わるというものです。

サンプルプログラム(1) クリックすると
サンプルプログラム(2)

b.プログラム

ではプログラムを見てみましょう。 背景が黄色の部分が新しい部分です。

'lesson2-1-2 ' 変数の宣言 Dim lpWcx As WNDCLASSEX Dim hBrush As HBRUSH Dim hMainWnd As HWND
Dim hLabelWnd As HWND
Dim lpMsg As MSG
' ブラシの作成 hBrush = CreateSolidBrush(GetSysColor(COLOR_3DFACE)) ' 変数lpWcxの初期化 FillMemory(VarPtr(lpWcx), Len(lpWcx), 0) ' クラスデータの設定 With lpWcx .lpszClassName = "NORMAL" .lpfnWndProc = AddressOf(MainWndProc) .hIcon = LoadIcon(NULL,IDI_APPLICATION) .hIconSm = LoadIcon(NULL,IDI_WINLOGO) .hCursor = LoadCursor(NULL,IDC_ARROW) .cbSize = SizeOf(WNDCLASSEX) .style = CS_DBLCLKS or CS_HREDRAW or CS_VREDRAW .hInstance = GetModuleHandle(0) .hbrBackground = hBrush End With
' ウィンドウクラスの登録 RegisterClassEx(lpWcx) ' ウィンドウの作成 hMainWnd =_ CreateWindowEx( NULL, "NORMAL", "スタティック(ラベル)ウィンドウ", WS_OVERLAPPEDWINDOW or WS_VISIBLE, CW_USEDEFAULT, CW_USEDEFAULT, 300, 200, NULL, NULL, GetModuleHandle(0), NULL )
hLabelWnd = _ CreateWindowEx( NULL, "STATIC", "クリックすると文字が変わります。", WS_CHILD or WS_VISIBLE, 10, 80, 290, 20, hMainWnd, NULL, GetModuleHandle(0), NULL )
' メッセージループ While GetMessage(lpMsg, 0, 0, 0) > 0 TranslateMessage(lpMsg) DispatchMessage(lpMsg) Wend ' 終了 DeleteObject(hBrush) End
' コールバック関数 Function MainWndProc(hWnd As HWND, wMsg As DWord, wParam As DWord, lParam As DWord) As Long Select Case wMsg
Case WM_LBUTTONUP SendMessage(hLabelWnd, WM_SETTEXT, 0, "クリックしましたね。")
Case WM_CLOSE DestroyWindow(hWnd) Case WM_DESTROY PostQuitMessage(0) Case Else MainWndProc = DefWindowProc(hWnd, wMsg, wParam, lParam) Exit Function End Select MainWndProc = 0 End Function

前ページ - 次ページ

ご質問・ご意見・ご感想・苦情等はメールまたはメイン掲示板のActiveBasic板などでお気軽にどうぞ。

ホーム > OriosのActiveBasic講座(トップページ) >