メッセージボックスの作成(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