したらばTOP ■掲示板に戻る■ 全部 1-100 最新50 | |

■■■20レス以内で済むF-BASICの質問はこちらへ■■■

54nisii:2004/07/31(土) 09:58
SDKによると SetForegroundWindow を使って欲しくないそうですね。

特にWindowsXPは、タスクバーなどの順位が上げられたみたいで、
SetForegroundWindow を発行するソフトが
アプリケーションエラーを起こしやすいなど、いっそう厄介です。

消極的ですが、ユーザーにボタン操作してもらって切り替える案ではダメですか?


#include "windows.bi"

common shared MAINFORM as object
MAINFORM.ATTACH GETHWND

var shared EDIT1 as object
EDIT1.ATTACH MAINFORM.GETDLGITEM( "EDIT1" )
EDIT1.SETFOCUS

do
WAITEVENT
loop
end

'-------------------------------------
' EDIT1がフォーカスを失ったときのイベント
declare sub EDIT1_KILLFOCUS edecl ()
sub EDIT1_KILLFOCUS()

var COUNT as long
var RC as long

' EDIT1のフォーカスを失ったら、1秒待つ
for COUNT = 1 to 100 : wait 1 : next

' トップモストのダイアログを使ってユーザーにボタン操作してもらい、
' フォーカスを強制的に戻す
MAINFORM.SETTOPMOSTWINDOW -1
RC = MAINFORM.MESSAGEBOX( "確認" , "EDIT1以外をクリックしないでください。" , 0 , 3 )
EDIT1.SETFOCUS
MAINFORM.SETTOPMOSTWINDOW 0

end sub


新着レスの表示


名前: E-mail(省略可)

※書き込む際の注意事項はこちら

※画像アップローダーはこちら

(画像を表示できるのは「画像リンクのサムネイル表示」がオンの掲示板に限ります)

掲示板管理者へ連絡 無料レンタル掲示板