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

3.ボタンウィンドウ

a.イントロダクション

今回はお馴染みの「ボタンウィンドウ」を学習します。作るプログラムは、下のようにボタンが表示されていて、ボタンをクリックするとメッセージボックスが出るというものです。

サンプルプログラム
↓クリックすると
メッセージボックス
↓そして
メッセージボックス

b.プログラム

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

'lesson2-1-3 ' 変数の宣言 Dim lpWcx As WNDCLASSEX Dim hBrush As HBRUSH Dim hMainWnd As HWND
Dim hButtonWnd 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 )
hButtonWnd =_ CreateWindowEx( NULL, "BUTTON", "押しちゃダメ", WS_CHILD or WS_VISIBLE, 30, 30, 230, 100, hMainWnd, 0, 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_COMMAND If lParam = hButtonWnd Then MessageBox(NULL, "押しちゃダメって書いたのに……", "", MB_OK) SendMessage(hButtonWnd, WM_SETTEXT, 0, "もう絶対押せません。") EnableWindow(hButtonWnd, FALSE) End If
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講座(トップページ) >