ウィンドウ編の始めということで、まずは何も付いていないシンプルなウィンドウ(スケルトンウィンドウ)の作り方を学習します。 このレッスンを身につければ下のようなウィンドウを作ることができます。
まずはプログラムを見てみましょう。 長いですが次ページ以降の説明を見れば簡単に理解できますので、まずは細かいことを気にせず、とにかく実行してみてください。
'lesson2-1-1 ' 変数の宣言 Dim lpWcx As WNDCLASSEX Dim hBrush As HBRUSH Dim hMainWnd 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 )' メッセージループ 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_CLOSE DestroyWindow(hWnd) Case WM_DESTROY PostQuitMessage(0) Case Else MainWndProc = DefWindowProc(hWnd, wMsg, wParam, lParam) Exit Function End Select MainWndProc = 0 End Function