ボタンをクリックした時のイベント

ActiveBasicでのプログラミングでわからないこと、困ったことなどがあったら、ここで質問してみましょう(質問を行う場合は、過去ログやWeb上であらかじめ問題を整理するようにしましょう☆)。
返信する
メッセージ
作成者
おしょう

ボタンをクリックした時のイベント

#1 投稿記事 by おしょう »

はじめまして。よろしくお願い致します。
ボタンを一気に作るプログラムを作ったのですが、個々にイベントを呼び出せません。コールバックで、ウィンドウIDによって分岐させることを思いついたのですが、上手くいきません。

コード: 全て選択

X = 0
Y = 0
For i = 1 to 24
	hCommandButton = CreateWindowEx(NULL,"BUTTON",Str$(i),WS_CHILD or WS_VISIBLE,X, Y, 40, 40,hMainWnd, "BC_"+Str$(i),GetModuleHandle(0),NULL)
	X = X + 40
	If i/6 = Int(i/6) Then
		Y = Y + 40
		X = 0
	End If
Next

また、コールバックのところは、ためしに次のように書きました。その前に、Const命令で、BC_1からBC_24まで宣言しています。

コード: 全て選択

Function MainWndProc(hWnd As HWND,wMsg As DWord,wParam As DWord,lParam As DWord) As Long
	Select Case wMsg
		Case WM_COMMAND		
			Select Case lParam
				Case hCommandButton
					Select Case LOWORD(wParam)
						Case BC_1
							MessageBox(0,"true","test",MB_OK)
						Case Else
							MessageBox(0,"false","test",MB_OK)
					End Select
			End Select
		Case WM_DESTROY
			PostQuitMessage(0)
		Case WM_CLOSE
	DestroyWindow(hMainWnd)
	For i = 1 to 24
		DestroyWindow(hCommandButton)
	Next
        Case Else
            MainWndProc = DefWindowProc(hWnd, wMsg, wParam, lParam)
            Exit Function
    End Select
    MainWndProc = 0
End Function

これで1番目のボタンをクリックしたとき「true」と出てほしいのですが、どのボタンでも「false」と出ます。どの部分が間違っていて、どうすれば解決するのでしょうか?
konisi
記事: 893
登録日時: 2005年7月25日(月) 13:27
お住まい: 埼玉県東松山市
連絡する:

#2 投稿記事 by konisi »

なるべく変数名を変更せずに動くものを作ろうとしたらこうなりました。
うまく動きますか?
Website→http://web1.nazca.co.jp/himajinn13sei/top.html
ここ以外の場所では「暇人13世」というHNを主として使用。

に署名を書き換えて欲しいと言われたので暇だしやってみるテスト。
おしょう

#3 投稿記事 by おしょう »

遅くなって申し訳ありません、うまく動きました。
変数名をそのままにしておいてくださって、とても助かりました。
ありがとうございました。
返信する