いのびあさんのmodTaskDialogですが、これを使えばチェックボックス付きのダイアログは
表示できるのですが、表示するにはモジュール内の変数を、以下のサイト等を参考にして
いじる必要があるようです。
(モジュール内のコメントを見る限りそういう使い方を想定しているようで、
必要な定数が定義済みなのはありがたいです)
https://docs.microsoft.com/en-us/windows/win32/api/commctrl/nf-commctrl-taskdialogindirect
https://docs.microsoft.com/en-us/windows/win32/api/commctrl/ns-commctrl-taskdialogconfig
#include "modTaskDialog.as"
chk_prm=0 //ここにチェックボックスの初期値を入れる。0はチェックなし、1はチェックあり
s="これはチェックボックス付ダイアログです。\n次回から表示したくない場合、下のチェックボックスをONにしてください。"
//事前にモジュール内の変数をいじる
//↓コマンドリンクではなく通常のボタンとして表示したいのでTDF_USE_COMMAND_LINKSは削除。
// 右上の[x]のみ有効にする。
dwFlags@mtd=TDF_ALLOW_DIALOG_CANCELLATION
chk_msg="今後、このダイアログボックスを表示しない。" //チェックボックスに表示する文言
sdim chk_msg16,strlen(chk_msg)*2+2 : cnvstow chk_msg16,chk_msg //UTF-16に変換
pszVerificationText@mtd=varptr(chk_msg16)
pfVerificationFlagChecked@mtd=varptr(chk_prm)
DialogVistaEx "チェックボックス付きダイアログ","",s,"","OK",0,0
mes stat //OKを押したのなら101が、[x]を押したのなら2が返る。
mes chk_prm //チェックボックスにチェックを入れたのなら1が、入れていないのなら0になる。
//↓モジュール内の変数を初期化したいのならこれを実行。
//DialogVistaInit
本来この手のダイアログを出すにはSHMessageBoxCheckを使うのが「本道」なようですが、
レジストリをいじるようなので、個人的にはあまりお勧めしたくないです。
https://www.usefullcode.net/2006/12/post_43.html