「とりあえず一般的なウインドウを作ってみたいんですけど。」の編集履歴(バックアップ)一覧はこちら

とりあえず一般的なウインドウを作ってみたいんですけど。」(2010/01/20 (水) 18:30:37) の最新版変更点

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

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

#誰かかいてくれるとうれしいな。
ABでウインドウを表示する方法にも幾つかあって、定番のRADを使う方法が一般的だと思う。 RADを使うと、裏で、ウインドウを作ったり、メニューやいろんなコントロールを付けてくれる。 これを今回は手書きでやってみよう。 まずはプログラムの提示。 'ウインドウクラスの作成 Const classname = "AB-WINDOWCLASS" Main() ExitProcess(0) Sub Main() Dim wc As WNDCLASSEX Dim hwnd As HWND Dim msg As MSG 'ウインドウクラスの設定 With wc .cbSize = SizeOf(WNDCLASSEX) .style=CS_HREDRAW or CS_VREDRAW .lpfnWndProc = AddressOf(wndproc) .hInstance=GetModuleHandle(0) .hIcon=LoadIcon(NULL,MAKEINTRESOURCE(IDI_APPLICATION)) .hIconSm=LoadIcon(NULL,MAKEINTRESOURCE(IDI_WINLOGO)) .hCursor=LoadCursor(NULL,MAKEINTRESOURCE(IDC_ARROW)) .lpszClassName=classname .hbrBackground=GetStockObject(WHITE_BRUSH) End With RegisterClassEx(wc) 'ウインドウを作る hwnd = CreateWindowEx(0, classname ,"平井公彦プロジェクト", WS_OVERLAPPEDWINDOW, CW_USEDEFAULT ,CW_USEDEFAULT ,CW_USEDEFAULT ,CW_USEDEFAULT , 0,0,GetModuleHandle(0),NULL) If hwnd = 0 Then Exit Sub ShowWindow(hwnd, SW_SHOW) UpdateWindow(hwnd) 'メッセージループ While GetMessage(msg,0,0,0) > 0 TranslateMessage( msg) DispatchMessage(msg) Wend End Sub 'ウインドウプロシジャー Function wndproc(hwnd As HWND, msg As DWord, wp As Dword, lp As DWord) As DWord Select Case msg Case WM_DESTROY PostQuitMessage(0) Case Else wndproc = DefWindowProc(hwnd,msg,wp,lp) Exit Function End Select End Function ↑このプログラムはただ、ウインドウを表示するだけのショボイプログラムだ。 が、こいつをベースにして、ありとあらゆるウインドウズアプリケーションを作ることができる。 さて、解説をしよう。 はじめに行うのが&bold(){ウインドウクラス}の設定だ。 こいつは自分の作りたいウインドウの素性を明らかにするものだ。 RegisterClassEx関数を使ってそれをOSに教える。 WNDCLASSEX構造体が&bold(){面倒}。 次がウインドウの作成。 CreateWindowExで作ったウインドウをShowWindowで&bold(){表示}。 引数多すぎて&bold(){嫌になる}。 最後が&bold(){メッセージループ}だ。 これは作ったウインドウ上にきたイベントメッセージを、GetMessage関数で収集して、DispatchMessage関数でウインドウプロシージャに送る。 ここは&bold(){定形}。以上。

表示オプション

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