★ダイアログエディタ

情報


概要

ムラりさんのダイアログエディタをなでしこに移植しました。
●MessageBox の様々なダイアログのソースを確認しながら出力することができます。

解説


//本体

#ダイアログエディタ

!母艦設計=『母艦の可視はオフ』
母艦について
  背景色はウィンドウ背景色。//RGB(128,128,255)
  タイトルは「APIダイアログエディタ 1.28」
  サイズは「60,20,600,555」
  スタイルは「枠固定」
  オフに最大化ボタン有効変更
部品間隔=8
文字サイズ=10
ボタンリストは「[OK]
[OK][キャンセル]
[中止][再試行][無視]
[はい][いいえ][キャンセル]
[はい][いいえ]
[再試行][取り消し]」
OSで条件分岐。
  「Windows Me」ならば、ボタンリストは、ボタンリスト&「{~}[キャンセル][再実行][続行]」
  「Windows 2000」ならば、ボタンリストは、ボタンリスト&「{~}[キャンセル][再実行][続行]」
  「Windows XP」ならば、ボタンリストは、ボタンリスト&「{~}[キャンセル][再実行][続行]」
リセット部品リストは「ボタンラジオ{~}アイコンラジオ{~}デフォルトラジオ
母艦チェック{~}ヘルプボタン{~}手前{~}逆チェック」

ボタンラジオとはラジオ。
ボタンラジオについて
  位置は「10,10」
  幅は250。
  高さは290。
  アイテムはボタンリスト。
  値は0。
  クリックした時は
	  もし、(OS!=『Windows XP』)かつ((ボタンラジオの、値)=6)ならば
		  母艦チェックの値はオフ。

アイコンラジオとはラジオ。
アイコンラジオについて
  位置は(ボタンラジオの右側)
  幅は140。
  高さは190。
  アイテムは「なし
[×]アイコン
[?]アイコン
[!]アイコン
[i]アイコン」
  値は、0。

デフォルトラジオとはラジオ。
デフォルトラジオについて
  位置は(アイコンラジオの下側)
  幅は240。
  高さは190。
  アイテムは「一番目のボタンがデフォルト
二番目のボタンがデフォルト
三番目のボタンがデフォルト
四番目のボタンがデフォルト」
  値は0。


ヘルプボタンとはチェック。
ヘルプボタンについて
  テキストは「ヘルプを追加(無意味)」
  位置は(ボタンラジオの下側)
  幅は200

手前とはチェック。
手前について
  テキストは「常に手前に表示」
  位置は(ヘルプボタンの下側)
  幅は130

母艦チェックとはチェック。
母艦チェックについて
  テキストは「母艦をクリックできなくする」
  位置は(手前の下側)
  幅は250
  クリックした時は
   	もし、OSが『Windows XP』でなければ、
  		もし、(母艦チェックの値)がオンならば、
  		  もし、(ボタンラジオの値)が6ならば、ボタンラジオの値は0。

逆チェックとはチェック。
逆チェックについて
  テキストは「ダイアログを逆にする」
  位置は(母艦チェックの下側)
  幅は250。

実行ボタンとはボタン。
実行ボタンについて
  テキストは「作 成」
  位置は(アイコンラジオの右側)
  幅は97
  高さは60
  クリックした時は~コード作成。

リセットボタンとはボタン。
リセットボタンについて
  位置は(実行ボタンの下側)
  幅は97
  高さは35
  クリックした時は
	  リセット部品リストを反復
	    「{それ}の値は0」をナデシコする。
	  「ダテエディタ{~}ダタエディタ」を反復
	    (対象&『のテキストは「」』)をナデシコする。
	   
プレビューボタンとはボタン。
プレビューボタンについて
  位置は(リセットボタンの下側)
  幅は97
  高さは35
  クリックした時は
    最終コード取得。
     「MessageBox((母艦の、ハンドル),ダテエディタ,ダタエディタ,${最終コード})。{選択肢}」をナデシコする。

使い方ボタンとはボタン。
使い方ボタンについて
  テキストは「使い方」
  位置は(プレビューボタンの下側)
  幅は97
  高さは40
  クリックした時は~ヘルプ表示。

ダイアログタイトルラベルとはラベル。
ダイアログタイトルラベルについて
  フォントサイズは10
  位置は(逆チェックの下側)

ダタエディタとはエディタ
ダタエディタについて
  位置は(ダイアログタイトルラベルの右側)
  Xは150
  幅は360
  フォントサイズは10
  IMEは「IMEオン」
  そのキー押した時は
    もし、ダタエディタの押された仮想キー=13/*ENTER*/ならば、ダテエディタに注目

ダイアログテキストラベルとはラベル。
ダイアログテキストラベルについて
  フォントサイズは10
  位置は(ダイアログタイトルラベルの下側)

ダテエディタとはメモ。
ダテエディタについて
  位置は(ダイアログテキストラベルの右側)
  Xは150
  幅は360
  高さは66
  フォントサイズは10
  IMEは「IMEオン」

母艦の可視はオン。
待機。

●ヘルプ表示
 「」を「オンラインヘルプ{~}このプログラムについて{~}アイコンについて{~}デフォルトとは」でボタン選択。
 条件分岐。
   「オンラインヘルプ」ならば、「http://www.realintegrity.net/~fuji/jprogram/nadesiko/dialog.html」を起動。
   「このプログラムについて」ならば、プログラムの内容。
   「アイコンについて」ならば、アイコンの意味。
   「デフォルトとは」ならば、デフォルトの意味。

●プログラムの内容
 「このプログラムでは」と言う。
 MessageBox((母艦の、ハンドル),「Version 1.00」,「(サンプルメッセージ)」,$40)。
 MessageBox((母艦の、ハンドル),「文章が変更されています。保存しますか?」,
 「(サンプルメッセージ)」,$23)。
 「のような特殊なダイアログを表示するためのソースを生成できます。」と言う。
 「基本的な使い方:
タイトルとテキストを入力して、アイコンを選び、プレビューボタンを押すと、
どんなダイアログが出るか見ることができます。
作成ボタンを押すと、そのダイアログを出すためのソースを貼り付けられます。
このとき、APIを貼り付けるかと出ますが、APIはプログラム中に一つ貼っておけば十分です。
また、APIはプログラムのどこにあってもかまいません。」と言う。

●アイコンの意味
 「アイコンには[×][?][!][i]の4つがあります。」と言う。
 MessageBox((母艦の、ハンドル),「エラーが発生しました。
([×]アイコンはエラーなど、プログラムに問題が発生した時に使います。)」,「(サンプルメッセージ)」,$10)。
 MessageBox((母艦の、ハンドル),「文章が変更されています。保存しますか?
([?]アイコンはユーザーにたずねる時に使います。)」,「(サンプルメッセージ)」,$23)。
 MessageBox((母艦の、ハンドル),「同名のファイルが存在します。上書きしますか?
([!]アイコンはユーザーに警告する時に使います。)」,「(サンプルメッセージ)」,$30)。
 MessageBox((母艦の、ハンドル),「Version 1.00
([i]アイコンは情報を表示する時に使います。)」,「(サンプルメッセージ)」,$40)。

●デフォルトの意味
 「デフォルトというのは、フォーカスをどこに合わせるか、と言うものです。
たとえば{[}テキストが変更されています。保存しますか。{]}というのを
[はい][いいえ][キャンセル]で尋ねる時、保存するのがいいだろうと言うことなら、
1番目([はい])にデフォルトを、終了を留まらせるのがいいだろうと言うことなら、
3番目([キャンセル])にデフォルトを合わせます。
実際に見てみましょう」と言う。
 MessageBox((母艦の、ハンドル),「テキストが変更されています。保存しますか。
(1番目にデフォルト)」,「(サンプルメッセージ)」,$33)。
 MessageBox((母艦の、ハンドル),「テキストが変更されています。保存しますか。
(3番目にデフォルト)」,「(サンプルメッセージ)」,$233)。

●MessageBox(h,t,c,u) =DLL("user32.dll", "int MessageBoxA(
    HWND hWnd, // handle of owner window
    LPCTSTR lpText, // address of text in message box
    LPCTSTR lpCaption, // address of title of message box  
    UINT uType  // style of message box
)")#"

●コード作成
    /*戻ってくる値
    0	エラー		1	OK
    2	キャンセル	3	中止
    4	再試行		5	無視
    6	はい		7	いいえ
    10	再実行		11	続行*/
    最終コード取得。
    
    「メッセージボックスのAPI(●MessageBox(h,t,c,u))も貼り付けますか?
これはソース中に一つあれば十分です。」と二択。
    もし、それがはいならば
		APIは改行&『●MessageBox(h,t,c,u) =DLL("user32.dll", "int MessageBoxA(
        HWND hWnd, // handle of owner window
        LPCTSTR lpText, // address of text in message box
        LPCTSTR lpCaption, // address of title of message box  
        UINT uType  // style of message box
    )")#"
    』
    違えば、APIは「」
  ダタエディタの`「`を『{「}』に置換して`」`を『{」}』に置換してタイトルに代入。
  ダテエディタの`「`を『{「}』に置換して `」`を『{」}』に置換してダイアログテキストに代入。
  最終ソース=「MessageBox((母艦の、ハンドル),{[}{ダイアログテキスト}{]},{[}{タイトル}{]},${最終コード})。{選択肢}」
    最終ソース&APIをコピー。
    デバッグエディタハンドルに『paste』をCOPYDATA送信。
    
    戻る。

●最終コード取得
    最終コードはボタンラジオの値。
    最終コードで条件分岐。
        0ならば、選択肢は「」
        1ならば、選択肢は改行&『もし、それが1/*OK*/ならば、「はいが押されました」と、言う。』&改行&『もし、それが2/*キャンセル*/ならば、「キャンセルが押されました」と、言う。』
        2ならば、選択肢は改行&『もし、それが3/*中止*/ならば、「中止が押されました」と、言う。』&改行&『もし、それが4/*再試行*/ならば、「再試行が押されました」と、言う。』&改行&『もし、それが5/*無視*/ならば、「無視が押されました」と、言う。』
        3ならば、選択肢は改行&『もし、それが6/*はい*/ならば、「はいが押されました」と、言う。』&改行&『もし、それが7/*いいえ*/ならば、「いいえが押されました」と、言う。』&改行&『もし、それが2/*キャンセル*/ならば、「キャンセルが押されました」と、言う。』
        4ならば、選択肢は改行&『もし、それが6/*はい*/ならば、「はいが押されました」と、言う。』&改行&『もし、それが7/*いいえ*/ならば、「いいえが押されました」と、言う。』
        5ならば、選択肢は改行&『もし、それが4/*再試行*/ならば、「再試行が押されました」と、言う。』&改行&『もし、それが2/*取り消し*/ならば、「取り消しが押されました」と、言う。』
        6ならば、選択肢は改行&『もし、それが2/*キャンセル*/ならば、「キャンセルが押されました」と、言う。』&改行&『もし、それが10/*再実行*/ならば、「再実行が押されました」と、言う。』&改行&『もし、それが11/*続行*/ならば、「続行が押されました」と、言う。』
        違えば、選択肢は「」
  
  それはアイコンラジオの値。
    最終コード=最終コード+それ*10。
    
    それはデフォルトラジオの値。
    最終コード=最終コード+それ*100
    
    それは手前の値。
    最終コード=最終コード+それ*40000。
    
    それはヘルプボタンの値。
    最終コード=最終コード+それ*4000。
    
    それは母艦チェックの値。
    最終コード=最終コード+それ*2000。
    
    それは逆チェックの値。
    最終コード=最終コード+それ*100000。
    
    戻る。


名前:
コメント:


タグ:

+ タグ編集
  • タグ:

このサイトはreCAPTCHAによって保護されており、Googleの プライバシーポリシー利用規約 が適用されます。

最終更新:2009年05月31日 17:30
ツールボックス

下から選んでください:

新しいページを作成する
ヘルプ / FAQ もご覧ください。
添付ファイル