by konisi » 2007年11月11日(日) 13:00
なるべく変数名を変更せずに動くものを作ろうとしたらこうなりました。
[ここをクリックすると内容が表示されます] [ここをクリックすると非表示にします]コード: 全て選択
'-----------------------------------------------------------------------------
' イベント プロシージャ
'-----------------------------------------------------------------------------
' このファイルには、ウィンドウ [MainWnd] に関するイベントをコーディングします。
' ウィンドウ ハンドル: hMainWnd
' TODO: この位置にグローバルな変数、構造体、定数、関数を定義します。
Dim hCommandButton[23] As HWND
Const BC_BASE=2000
Const BC_1=BC_BASE+0'以下省略。
'-----------------------------------------------------------------------------
' ウィンドウメッセージを処理するためのコールバック関数
Function MainWndProc(hWnd As HWND, dwMsg As DWord, wParam As WPARAM, lParam As LPARAM) As DWord
Dim i As Long,buf[50] As Byte
Select Case dwMsg
Case WM_COMMAND
Select Case LOWORD(wParam)
Case BC_1
Select Case HIWORD(wParam)
Case BN_CLICKED
MessageBox(0,"true","test",MB_OK)
End Select
Case Else
Select Case HIWORD(wParam)
Case BN_CLICKED
wsprintf(buf,"false. no:%d",LOWORD(wParam)-BC_BASE+1)
MessageBox(0,buf,"test",MB_OK)
End Select
End Select
Case Else
MainWndProc=EventCall_MainWnd(hWnd,dwMsg,wParam,lParam)
Exit Function
End Select
MainWndProc = 0
End Function
'-----------------------------------------------------------------------------
' ここから下は、イベントプロシージャを記述するための領域になります。
Sub MainWnd_Destroy()
Dim i As Long
For i = 0 to 23
DestroyWindow(hCommandButton)
Next
TestB_DestroyObjects()'プロジェクト名によって異なる。変更すること。
PostQuitMessage(0)
End Sub
Sub MainWnd_Create(ByRef CreateStruct As CREATESTRUCT)
Dim X=0 As Long,Y=0 As Long,i As Long,buf[40] As Byte
For i=0 to 23
wsprintf(buf,"%d",i+1)
hCommandButton = CreateWindowEx(NULL,"BUTTON",buf,WS_CHILD or WS_VISIBLE,X, Y, 40, 40,hMainWnd,(BC_BASE+i) As HMENU,GetModuleHandle(0),NULL)
X+=40
If i mod 6=5 Then'iを6で割ったときの余りで分岐。
Y+=40
X=0
End If
Next
End Sub
うまく動きますか?
なるべく変数名を変更せずに動くものを作ろうとしたらこうなりました。[hide][code]'-----------------------------------------------------------------------------
' イベント プロシージャ
'-----------------------------------------------------------------------------
' このファイルには、ウィンドウ [MainWnd] に関するイベントをコーディングします。
' ウィンドウ ハンドル: hMainWnd
' TODO: この位置にグローバルな変数、構造体、定数、関数を定義します。
Dim hCommandButton[23] As HWND
Const BC_BASE=2000
Const BC_1=BC_BASE+0'以下省略。
'-----------------------------------------------------------------------------
' ウィンドウメッセージを処理するためのコールバック関数
Function MainWndProc(hWnd As HWND, dwMsg As DWord, wParam As WPARAM, lParam As LPARAM) As DWord
Dim i As Long,buf[50] As Byte
Select Case dwMsg
Case WM_COMMAND
Select Case LOWORD(wParam)
Case BC_1
Select Case HIWORD(wParam)
Case BN_CLICKED
MessageBox(0,"true","test",MB_OK)
End Select
Case Else
Select Case HIWORD(wParam)
Case BN_CLICKED
wsprintf(buf,"false. no:%d",LOWORD(wParam)-BC_BASE+1)
MessageBox(0,buf,"test",MB_OK)
End Select
End Select
Case Else
MainWndProc=EventCall_MainWnd(hWnd,dwMsg,wParam,lParam)
Exit Function
End Select
MainWndProc = 0
End Function
'-----------------------------------------------------------------------------
' ここから下は、イベントプロシージャを記述するための領域になります。
Sub MainWnd_Destroy()
Dim i As Long
For i = 0 to 23
DestroyWindow(hCommandButton[i])
Next
TestB_DestroyObjects()'プロジェクト名によって異なる。変更すること。
PostQuitMessage(0)
End Sub
Sub MainWnd_Create(ByRef CreateStruct As CREATESTRUCT)
Dim X=0 As Long,Y=0 As Long,i As Long,buf[40] As Byte
For i=0 to 23
wsprintf(buf,"%d",i+1)
hCommandButton[i] = CreateWindowEx(NULL,"BUTTON",buf,WS_CHILD or WS_VISIBLE,X, Y, 40, 40,hMainWnd,(BC_BASE+i) As HMENU,GetModuleHandle(0),NULL)
X+=40
If i mod 6=5 Then'iを6で割ったときの余りで分岐。
Y+=40
X=0
End If
Next
End Sub[/code][/hide]
うまく動きますか?