メッセージボックスの作成(U) <TOP>
APIでメッセージボックスを作成します。ボタン種・アイコンをチェックして作成ボタンをクリックします。
MessageBoxIndirect メッセージボックスの作成
※lpszIconは、今のところ設定できていません(-_-;)
'================================================================ '= メッセージボックスの作成(2) '= (MessageBoxIndirect.bas) '================================================================ #include "Windows.bi" Type MSGBOXPARAMS cbSize As Long hwndOwner As Long hInstance As Long lpszText As Long lpszCaption As Long dwStyle As Long lpszIcon As Long dwContextHelpId As Long lpfnMsgBoxCallback As Long dwLanguageId As Long End Type ' メッセージボックスの作成、表示、操作を行う Declare Function Api_MessageBoxIndirect& Lib "user32" Alias "MessageBoxIndirectA" (lpMsgBoxParams As MSGBOXPARAMS) ' ウェーブフォームサウンドを再生 Declare Function Api_MessageBeep& Lib "user32" Alias "MessageBeep" (ByVal wType&) #define MB_ABORTRETRYIGNORE &H2 '[中止][再試行][無視] #define MB_APPLMODAL &H0 'メッセージボックスの親ウィンドウ以外のウィンドウの操作は可能 #define MB_CANCELTRYCONTINUE &H6 '[キャンセル][再実行][続行] #define MB_COMPOSED &H2 '合成文字を使う(MB_PRECOMPOSITEとは組み合わせない) #define MB_DEFAULT_DESKTOP_ONLY &H20000 '(WinNT/2000) #define MB_DEFBUTTON1 &H0 '最初のボタンをデフォルトプッシュボタンに(デフォルト) #define MB_DEFBUTTON2 &H100 '2番目のボタンをデフォルトプッシュボタンに #define MB_DEFBUTTON3 &H200 '3番目のボタンをデフォルトプッシュボタンに #define MB_DEFBUTTON4 &H300 '4番目のボタンをデフォルトプッシュボタンに #define MB_ERR_INVALID_CHARS &H8 '不明な文字があったときにエラーを発生する #define MB_HELP &H4000 'ヘルプボタンを追加 #define MB_ICONASTERISK &H40 'メッセージ(情報) #define MB_ICONEXCLAMATION &H30 '感嘆符アイコン #define MB_ICONHAND &H10 'システムエラー #define MB_ICONINFORMATION &H40 '吹き出しに「i」のアイコン #define MB_ICONQUESTION &H20 '疑問符アイコン #define MB_ICONSTOP &H10 '停止アイコン #define MB_OK &H0 '[OK] #define MB_OKCANCEL &H1 '[OK][キャンセル] #define MB_PRECOMPOSED &H1 '作成済み文字を使う(MB_COMPOSITEとは組み合わせない) #define MB_RETRYCANCEL &H5 '[再試行][キャンセル] #define MB_RIGHT &H80000 'テキストを右寄せ #define MB_RTLREADING &H100000 'テキストを右から左へ表示(アラビア語) #define MB_SETFOREGROUND &H10000 'メッセージボックスをフォアグラウンドウィンドウに #define MB_SYSTEMMODAL &H1000 'メッセージボックスがWS_EX_TOPMOSTスタイルを持つ以外は、MB_APPLMODALと同じ #define MB_TASKMODAL &H2000 '他のアプリケーションを中断せず、他のウィンドウへの入力を禁止 #define MB_TOPMOST &H40000 'メッセージボックスを最前面ウィンドウ(WS_EX_TOPMOST)で作成 #define MB_USEGLYPHCHARS &H4 '制御文字の変わりにグリフ文字を使う #define MB_USERICON &H80 '独自のアイコン #define MB_YESNO &H4 '[はい][いいえ] #define MB_YESNOCANCEL &H3 '[はい][いいえ][キャンセル] #define IDABORT 3 '[中止]ボタンを選択 #define IDCANCEL 2 '[キャンセル]ボタンを選択 #define IDCLOSE 8 '[閉じる]ボタンを選択 #define IDCONTINUE 11 '[続行]ボタンを選択 #define IDHELP 9 '[ヘルプ]ボタンを選択 #define IDIGNORE 5 '[無視]ボタンを選択 #define IDNO 7 '[いいえ]ボタンを選択 #define IDOK 1 '[OK]ボタンを選択 #define IDRETRY 4 '[再試行]ボタンを選択 #define IDTRYAGAIN 10 '[再実行]ボタンを選択 #define IDYES 6 '[はい]ボタンを選択 #define LANG_JAPANESE &H11 '日本語 Var Shared Text1 As Object Var Shared Button1 As Object Text1.Attach GetDlgItem("Text1") : Text1.SetFontSize 12 Button1.Attach GetDlgItem("Button1") : Button1.SetFontSize 14 '================================================================ '= '================================================================ Declare Sub Button1_on edecl () Sub Button1_on() Var mbp As MSGBOXPARAMS Var msg As String Var Ret As Long msg = "このメッセージボックスは、" & Chr$(13, 10) & "API関数[MessageBoxIndirect]で作成しました!" mbp.cbSize = Len(mbp) mbp.hwndOwner = GethWnd mbp.hInstance = GethInst mbp.lpszText = StrAdr(msg & Chr$(0)) mbp.lpszCaption = StrAdr("MessageBox Title" & Chr$(0)) mbp.dwStyle = MB_YESNOCANCEL Or MB_TOPMOST Or MB_USERICON mbp.lpszIcon = 101 mbp.lpfnMsgBoxCallback = 0 mbp.dwLanguageId = LANG_JAPANESE Ret = Api_MessageBeep(MB_ICONINFORMATION) Ret = Api_MessageBoxIndirect(mbp) If Ret = IDYES Then Text1.SetWindowtext "「はい」を選択しました!" Else If Ret = IDNO Then Text1.SetWindowtext "「いいえ」を選択しました!" Else If Ret = IDCANCEL Then Text1.SetWindowtext "「キャンセル」を選択しました!" End If End Sub '================================================================ '= '================================================================ While 1 WaitEvent Wend Stop End