HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2017
0324
風吹けば名無しダイアログの標準ボタンを変えたい。8解決


風吹けば名無し

リンク

2017/3/24(Fri) 20:27:51|NO.78647

dialogで標準ボタンを変えるにはどうすればいいですか?
ググっても見つかりません。



この記事に返信する


沢渡

リンク

2017/3/25(Sat) 13:51:14|NO.78660

このスレで私が答えた筈ですが、この方法では不味いのですか?
http://hsp.tv/play/pforum.php?mode=all&num=78629



風吹けば名無し

リンク

2017/3/25(Sat) 19:30:37|NO.78663

それではないやつです。



沢渡

リンク

2017/3/25(Sat) 21:38:02|NO.78666

「それではないやつです」と言われても、どういうやつなのかわからないのですが……。

表示するボタンから画像まで全部自作したいのなら、自前でウィンドウを作り、そのウィンドウを
「閉じるまで親ウィンドウにはアクセスできないウィンドウ」にするという方法はどうでしょうか。
このスレを参考に、作ってみました。
http://hsp.tv/play/pforum.php?mode=pastwch&num=67404


#include "user32.as" pos 0,0 : button "開く",*open stop *open d_wid=200 : d_hei=100 //表示するダイアログの横幅と縦幅 hwnd0=hwnd //親ウィンドウのハンドルを取得 screen 1,d_wid,d_hei,6 : gsel 1 //非表示でサイズ変更できないウィンドウをダイアログ用に作る width ,,int((ginfo_dispx-d_wid)/2),int((ginfo_dispy-d_hei)/2) //ダイアログを画面中央に配置 SetWindowLong hwnd, -8, hwnd0 //ダイアログウィンドウを、親ウィンドウの子ウィンドウにする //ここから title "テスト" pos 0,0 : mes "テスト" objsize 100,30 pos 50,50 : button "OK",*close //ここまで SetWindowLong hwnd, -16, 0xC80000 //ダイアログウィンドウを「システムボタンとタイトル部分だけがあるウィンドウ」に設定 EnableWindow hwnd0, 0 //親ウィンドウを一時的にアクセス不可にする gsel 1,1 //ダイアログウィンドウを表示 onexit goto *close //右上のXを押した時用 stop *close //ダイアログを閉じる gsel 1 : clrobj //ダイアログ上のボタン等を削除 gsel 1,-1 //ダイアログを消去 EnableWindow hwnd0, 1 //親ウィンドウをアクセス可能にする gsel 0 //親ウィンドウをアクティブに onexit 0 //右上のXを押した時用の処理を無効に stop
ダイアログの内容を変更したいのなら、「ここから」から「ここまで」の内容をいじってください。



MillkeySoftware

リンク

2017/3/26(Sun) 17:27:27|NO.78672

MB_YESNO の定数と MB_ICONQUESTION の定数が欲しいって感じかの?

リンク先の画像など見ると疑問符アイコン、ボタンは「はい」「いいえ」となっているので。

#uselib "user32.dll" #func MessageBox "MessageBoxA" int,sptr,sptr,int //ボタン定数 #define MB_OK 0x00000000 #define MB_OKCANCEL 0x00000001 #define MB_ABORTRETRYIGNORE 0x00000002 #define MB_YESNOCANCEL 0x00000003 #define MB_YESNO 0x00000004 #define MB_RETRYCANCEL 0x00000005 #define MB_CANCELTRYCONTINUE 0x00000006 //アイコン定数 #define MB_ICONHAND 0x00000010 #define MB_ICONQUESTION 0x00000020 #define MB_ICONEXCLAMATION 0x00000030 #define MB_ICONASTERISK 0x00000040 #define MB_USERICON 0x00000080 #define MB_ICONWARNING MB_ICONEXCLAMATION #define MB_ICONERROR MB_ICONHAND #define MB_ICONINFORMATION MB_ICONASTERISK #define MB_ICONSTOP MB_ICONHAND MessageBox hwnd,"削除してもよろしいですか?","確認",MB_ICONQUESTION | MB_YESNO
ダイアログの説明などは、MSDN の MessageBox の説明を見てください。
https://msdn.microsoft.com/ja-jp/library/cc410914.aspx



MillkeySoftware

リンク

2017/3/26(Sun) 17:32:39|NO.78673

書き忘れです。

アイコンの疑問符及びダイアログ全体のグラフィックが違うなどの場合は、OS 依存となりますので OS によって表示が違います。
主の提示されたURL のダイアログは、XP スタイルですので、XP ではないと完全に再現できません。



風吹けば名無し

リンク

2017/3/26(Sun) 18:13:50|NO.78674

このようにやってみたのですがうまくいきません。

#uselib "user32.dll" #func MessageBox "MessageBoxA" int,sptr,sptr,int //ボタン定数 #define MB_OK 0x00000000 #define MB_OKCANCEL 0x00000001 #define MB_ABORTRETRYIGNORE 0x00000002 #define MB_YESNOCANCEL 0x00000003 #define MB_YESNO 0x00000004 #define MB_RETRYCANCEL 0x00000005 #define MB_CANCELTRYCONTINUE 0x00000006 //アイコン定数 #define MB_ICONHAND 0x00000010 #define MB_ICONQUESTION 0x00000020 #define MB_ICONEXCLAMATION 0x00000030 #define MB_ICONASTERISK 0x00000040 #define MB_USERICON 0x00000080 #define MB_ICONWARNING MB_ICONEXCLAMATION #define MB_ICONERROR MB_ICONHAND #define MB_ICONINFORMATION MB_ICONASTERISK #define MB_ICONSTOP MB_ICONHAND MessageBox hwnd,"削除してもよろしいですか?","確認",MB_ICONQUESTION | MB_YESNO |MB_DEFBUTTON2



沢渡

リンク

2017/3/26(Sun) 18:20:16|NO.78675

あー、「標準ボタンを変えたい」の意味がやっとわかりましたよ。要するに「デフォルトで選択されているボタンを変えたい」と。

>このようにやってみたのですがうまくいきません。
定数MB_DEFBUTTON2が定義されていないのだから、上手くいかないのは当然です。
次の一文を追加してください。

#define MB_DEFBUTTON2 0x00000100
ほかのDEFBUTTONの数値についてはここを参照。
https://msdn.microsoft.com/ja-jp/library/windows/desktop/ms645505(v=vs.85).aspx



風吹けば名無し

リンク

2017/3/26(Sun) 18:46:32|NO.78676

ありがとうございます。
このようにすればできました。

#uselib "user32.dll" #func MessageBox "MessageBoxA" int,sptr,sptr,int //ボタン定数 #define MB_OK 0x00000000 #define MB_OKCANCEL 0x00000001 #define MB_ABORTRETRYIGNORE 0x00000002 #define MB_YESNOCANCEL 0x00000003 #define MB_YESNO 0x00000004 #define MB_RETRYCANCEL 0x00000005 #define MB_CANCELTRYCONTINUE 0x00000006 //アイコン定数 #define MB_ICONHAND 0x00000010 #define MB_ICONQUESTION 0x00000020 #define MB_ICONEXCLAMATION 0x00000030 #define MB_ICONASTERISK 0x00000040 #define MB_USERICON 0x00000080 #define MB_ICONWARNING MB_ICONEXCLAMATION #define MB_ICONERROR MB_ICONHAND #define MB_ICONINFORMATION MB_ICONASTERISK #define MB_ICONSTOP MB_ICONHAND //標準ボタン定数 #define MB_DEFBUTTON1 0x00000000 #define MB_DEFBUTTON2 0x00000100 #define MB_DEFBUTTON3 0x00000200 #define MB_DEFBUTTON4 0x00000300 MessageBox hwnd,"本文","タイトル",MB_ICONASTERISK|MB_YESNOCANCEL|MB_DEFBUTTON3 mes stat



ONION software Copyright 1997-2021(c) All rights reserved.