by ゲスト » 2011年6月12日(日) 13:36
アドバイスありがとうございます。
初心者ゆえあっちこっちぶつかりやっています。
他にも色々な方法があるようですが、以下内容で動いています。
(MessageBox関数でuTypeをMB_OKとした場合などや、他の方のアプリソフトでもSPACEキ-とENTERキ-では動きが違い、ENTERキ-では押された感じを出さないようなのでこれでやっています)
MainWnd_Createイベントで、
コード: 全て選択
hEnterKey =CreateThread(ByVal NULL, 0, AddressOf(EnterKey), 0, 0, VarPtr(dwDummy))
でEnterKeyスレッドを生成し、ActivateFlagやCmdButton1_FocusFlagは別イベントで決めておき、
コード: 全て選択
Function EnterKey(hWnd As DWord) As DWord
While 1
If ActivateFlag =1 Then 'ウィンドウがアクティブならスレッド処理
If CmdButton1_FocusFlag =1 Then
If GetAsyncKeyState(&h0d) and &H8000 Then '&h0d =ENTERキーでキーが押された
SendMessage(hCommandButton1, BM_CLICK, 0, 0) 'これだと押された感じが出ない
End If
End If
Sleep(20)
End If
Wend
CloseHandle(hEnterKey)
End Function
とスレッド処理。
コード: 全て選択
SendMessage(hCommandButton1, BM_CLICK, 0, 0)
の代わりに
コード: 全て選択
SendMessage(hCommandButton1, WM_LBUTTONDOWN, 0, 0)
Sleep(30)
SendMessage(hCommandButton1, WM_LBUTTONUP, 0, 0)
とすると、ボタンが押された感じが出ますが、同時にマウスを動かしているとエラ-を起こすのでやめました。
アドバイスありがとうございます。
初心者ゆえあっちこっちぶつかりやっています。
他にも色々な方法があるようですが、以下内容で動いています。
(MessageBox関数でuTypeをMB_OKとした場合などや、他の方のアプリソフトでもSPACEキ-とENTERキ-では動きが違い、ENTERキ-では押された感じを出さないようなのでこれでやっています)
MainWnd_Createイベントで、
[code] hEnterKey =CreateThread(ByVal NULL, 0, AddressOf(EnterKey), 0, 0, VarPtr(dwDummy))[/code]でEnterKeyスレッドを生成し、ActivateFlagやCmdButton1_FocusFlagは別イベントで決めておき、
[code]Function EnterKey(hWnd As DWord) As DWord
While 1
If ActivateFlag =1 Then 'ウィンドウがアクティブならスレッド処理
If CmdButton1_FocusFlag =1 Then
If GetAsyncKeyState(&h0d) and &H8000 Then '&h0d =ENTERキーでキーが押された
SendMessage(hCommandButton1, BM_CLICK, 0, 0) 'これだと押された感じが出ない
End If
End If
Sleep(20)
End If
Wend
CloseHandle(hEnterKey)
End Function[/code]とスレッド処理。
[code]SendMessage(hCommandButton1, BM_CLICK, 0, 0)[/code]の代わりに
[code]SendMessage(hCommandButton1, WM_LBUTTONDOWN, 0, 0)
Sleep(30)
SendMessage(hCommandButton1, WM_LBUTTONUP, 0, 0)[/code]とすると、ボタンが押された感じが出ますが、同時にマウスを動かしているとエラ-を起こすのでやめました。