[cbuilder:40101] TApplicationクラスのMessageBox関数での表示

44 views
Skip to first unread message

Y.Nishiguchi

unread,
Jul 13, 2009, 5:05:46 AM7/13/09
to C++ビルダーML投稿
西口です。

環境は以下の通りです。
 Windows XpSP2 & Windows VistaSP1
 CB2009

 CB2009だけに限った話ではなく、WindowsのAPIに関する質問と言うこと
になるかも知れませんが、お願いいたします。

 TApplicatonクラスのMessageBox関数で表示するダイアログボックスの
表示文字が小さくて、他のフォームの文字はそのまま、このダイアログボ
ックスの表示文字(フォント)を大きくしたいのですが、どなたかご存じ
ありませんか?

 表示される、マークも堂用意大きくしたいのです。

 ダイアログボックスを自分で新規フォームで用意して、OKボタンなどを
配置して作成する方法は採りたくなく、あくまで、TApplicatonクラスの
MessageBox関数で表示するダイアログボックスで行いたいのです。

 よろしくお願いいたします。

~~~~~~~~~~~~~~~~~~~~~~
〒350-2201
埼玉県鶴ヶ島市
                 西口幸男 
E-mail: y_nish...@xa.ejnet.ne.jp
~~~~~~~~~~~~~~~~~~~~~~

Y.Nishiguchi

unread,
Jul 13, 2009, 10:24:22 AM7/13/09
to C++ビルダーML投稿
西口です。

 誤字がありましたので、再度の投稿です。

環境は以下の通りです。
 動作OS:Windows XpSP2 & Windows VistaSP1
 開発言語・ツール:CB2009

 CB2009だけに限った話ではなく、WindowsのAPIに関する質問と言うこと
になるかも知れませんが、お願いいたします。

 TApplicatonクラスのMessageBox関数で表示するダイアログボックスの
表示文字が小さくて、他のフォームの文字はそのまま、このダイアログボ
ックスの表示文字(フォント)を大きくしたいのですが、どなたかご存じ
ありませんか?

 表示される、マークも同様に大きくしたいのです。

 ウィンドウタイトルも出来れば大きくしたい。


 ダイアログボックスを自分で新規フォームで用意して、OKボタンなどを
配置して作成する方法は採りたくなく、あくまで、TApplicatonクラスの
MessageBox関数で表示するダイアログボックスで行いたいのです。

 どなたか、ご存じでしたら、よろしくお願いいたします。

Y.Nishiguchi

unread,
Jul 13, 2009, 8:30:41 PM7/13/09
to cbui...@sfdata.ne.jp
西口です。

 自己レスです。 以前にも同様の質問をしていました。
 で、質問のようなことをやっていると思われるプログラムのソースを手
に入れることが出来ましたので、調べたところ、

 TApplicatonクラスのMessageBox関数で表示しているのではなく、

 表示フォームを真似た新しいフォームを作成していました。

 「!」や「?」、「×」などのアイコンイメージも自分で表示している
ことが判明しました。

 ただ、「!」マークなどのWindowsが所有しているというか、アイコン
のイメージの取得方法が今ひとつわかりません。

 で、質問内容を変えて、

【質問1】
 どのようなアイコンがあるのかを知る方法は?

【質問2】
 そのアイコンイメージの取得方法は?


 以上、よろしくお願いいたします。


 追伸:動作環境および開発環境は
  動作OS:Windows XP(SP2以降) & Vista(SP1以降)
  開発ツール:CB5, CB6, CB2009
 です。

k.maj...@nifty.com

unread,
Jul 15, 2009, 11:12:22 PM7/15/09
to cbui...@sfdata.ne.jp
なかじまです

>【質問1】どのようなアイコンがあるのかを知る方法は?
MSのMessageBox関数のヘルプを読むか、ググルなど
>【質問2】そのアイコンイメージの取得方法は?
LoadIcon()かLoadImage()関数(WIN32API)で取得できる様です

BCB5でお試しコードを書きました
Imageコンポを1つフォームに配置してください

void __fastcall TForm1::Button5Click(TObject *Sender)
{
UINT mbi[4] = {MB_ICONERROR, MB_ICONINFORMATION,
MB_ICONQUESTION, MB_ICONWARNING};
char* sco[4] = {"MB_ICONERROR", "MB_ICONINFORMATION",
"MB_ICONQUESTION", "MB_ICONWARNING"};
char* idi[4] = {IDI_ERROR, IDI_INFORMATION,
IDI_QUESTION, IDI_WARNING};
HICON hIcon;
int i;

for (i=0; i<4; i++) {
hIcon = ::LoadIcon(NULL, idi[i]); // Win32API
if (hIcon != NULL) {
// ひとづつ確認する用
Image1->Picture->Icon->Handle = hIcon;
Application->MessageBox(sco[i],"確認",MB_OK | mbi[i]);
}
}

// 初期サイズと50ピクセル角でアイコンを描いてみる
Graphics::TBitmap* map;
Graphics::TIcon* ico;
TRect Rect(0,0, 0,0);
TRect Iti(0,150, 50,200);
TPoint poi(0,100);

map = new Graphics::TBitmap;
ico = new Graphics::TIcon;

for (i=0; i<4; i++) {
hIcon = ::LoadIcon(NULL, idi[i]);
if (hIcon != NULL) {
ico->Handle = hIcon;
map->Palette = ico->Palette;
map->PixelFormat = pf32bit;//pf8bit;
map->Height = ico->Height;
map->Width = ico->Width;
map->Canvas->Brush->Color = clBtnFace;
Rect.Right = map->Width;
Rect.Bottom= map->Height;
map->Canvas->FillRect(Rect);
map->Canvas->Draw(0,0, ico);

Canvas->Draw(poi.x, poi.y, map);
poi.x += 50;
Canvas->StretchDraw(Iti, map);
Iti.left += 50;
Iti.Right += 50;
}
}
delete ico;
delete map;
}


Y.Nishiguchi

unread,
Jul 21, 2009, 8:14:17 PM7/21/09
to cbui...@sfdata.ne.jp
お礼の変身が遅れましてすみませんでした。

 なかじまさん、丁寧なソースコードの提示ありがとうございます。
 取り込ませていただきますね m(__)m

~~~~~~~~~~~~~~~~~~~~~~
〒350-2201
埼玉県鶴ヶ島市富士見1丁目1-8
     アーバンヒルズ305
                 西口幸男
 E-mail: y_nish...@xa.ejnet.ne.jp
~~~~~~~~~~~~~~~~~~~~~~

Reply all
Reply to author
Forward
0 new messages