
TCHAR s[80] = "Test";
MessageBox(NULL, s, "題名", MB_YESNO);
としてダイアログを表示させるのと同じように、
ダイアログボックスをリソースエディタで作成し
作成したダイアログ内に、文字列を表示させるには
どのようにしたら良いでしょうか?
作成したダイアログは、MessageBox関数で作成されるものと同じ。
表示させたい文字列は、MessageBox関数の第2パラメータのTCHAR型変数sと同じ。
ダイアログ内の表示させたい所の識別子は、IDC_STATIC。
MS VC++ & Win98 の環境で作成してます。
No.4ベストアンサー
- 回答日時:
エラー情報を取得してみてください。
HWND handle = GetDlgItem(hWnd, IDC_STATIC);
DWORD errorInf = 0;
if (handle == NULL) { errorInf = GetLastError(); }
として、これらの処理を通った後のerrorInfの値をデバッガ等で見てください。
数値に対応するエラーは参考URLにあります。
(FormatMessage()を使用してもかまいませんが)
ここまででハンドルが正常に取得できている場合には、SetWindowText()について同様にエラー情報を取得してみてください。
参考URL:http://msdn.microsoft.com/library/default.asp?ur …
いつも回答を頂きありがとうございます。
HWND handle = GetDlgItem(hWnd, IDC_STATIC);
DWORD errorInf = 0;
if (handle == NULL) { errorInf = GetLastError(); }
は、Dialog作成処理後で良いですよね?
0x00000が格納されていたので、ERROR_SUCCESS
よって、異常なし。
今度は、SetWindowText(GetDlgItem(hWnd, IDC_STATIC), StrDat1);
の後に試したら、
0x00057が格納されていたので、ERROR_INVALID_PARAMETER
よって、パラメータがおかしい?
という解釈で良いでしょうか?
0x00057は16進なので、10進に変換して87のエラー詳細をみましたが。
No.3
- 回答日時:
こんにちは。
itohhといいます。以下のような感じでよいのでしょうか?
例えば、以下のようなダイアログをイメージした場合で説明します。
+---------------------+
| |
+---------------------+
| |
| |
| メッセージエリア |
| |
| +------+ +------+ |
| | ボタン1 | | ボタン2 | |
| +------+ +------+ |
| |
+---------------------+
(1)「メッセージエリア」のところは、スタティックコントロールでIDC_STATIC_MSGとします。
IDC_STATICのままだとクラスウィザードでメンバ変数に割り当てられません。
(IDC_STATIC_MSGは、適当な名前に変えてください。)
(2)IDC_STATIC_MSGにクラスウィザードでメンバ変数をCStirngでm_Stat_Msgとします。
CStirngの変数に値を設定するように扱えます。
(3)あとは、このメンバ変数に値を設定するタイミングを工夫すればよいでしょう。
例えば。
a.DoModal関数で表示する前に値を設定しておく。
b.MessageBox関数みたいなラッパー関数を自作し、その中で値を設定する。
c.Etc...
回答ありがとうございます。
せっかくご丁寧な回答をいただけたのですが、
クラスウィザードを使わない方法で
コントロール内のスタティックテキスト(IDC_STATIC)
へ文字列を表示したいのです。
また、現在の自分のLEVELでは説明を理解するのは困難である為
上記方法での追求は、困難を招くと考えられることから
LevelUpしてから同じ仕様を上記方法で試したいと思います。
その時、カベにぶつかるような事がありましたら、
参考にさせていただきます。
ありがとうございました。
No.2
- 回答日時:
> SetWindowText(hWnd, StrDat1);
ここで親windowを指定しているからではないですか?
SetWindowText(GetDlgItem(hWnd, IDC_STATIC), StrDat1);
ではどうでしょう。
エラー処理無視ですが。
2度目の回答ありがとうございます。
試したところ、
親ウィンドウのタイトルバーに表示されなくなりました。
が、ダイアログ内のスタティックテキスト(IDC_STATIC)
には、表示されませんでした。。。
StrDat1の中身をデバッガでも見たんですけど、
きちんと格納されていました。
必ずどこか間違っているはずなんですけど。
コントロールへアクセス出来ていないのでしょうか?
No.1
- 回答日時:
GetDlgItem()でIDC_STATICに対応するコントロールのハンドルを取得し、
SetWindowText()を実行すればできませんか?
windowsx.hのマクロStatic_SetText()を使った方がいいのかもしれませんが。
参考URL:http://www.microsoft.com/japan/developer/library …
回答ありがとうございます。
やっと試すことができました。
が、
GetDlgItem(hWnd, IDC_STATIC);
SetWindowText(hWnd, StrDat1);
とすると、親ウィンドウのタイトルバーが書き換えられちゃいます。
これは、ウィンドウハンドルの取得の仕方が間違っているのでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
マクロ 特定のセル値のみクリ...
-
先ほどの質問の続きなのですが...
-
【ASP.NET】 DataTextFieldの値...
-
marginとpaddingにマイナス
-
DBのデータをjavascript側で利...
-
PL/SQLでのTO_DATEの時間取得に...
-
パスワードの再入力処理
-
VBScriptで別フレームのセレク...
-
VB.NETで DataRow()を利用して...
-
count(*)で取得した値をJAVAの...
-
VBA ユーザーフォーム ボタンク...
-
PHP8でWarning:Undefined varia...
-
【ACCESS】リレーションを組ん...
-
[Excel VB]プルダウンで文字選...
-
エクセルでエラーを無視して一...
-
Excel VBA 配列の分割について
-
「XML」の読み方
-
利用者側のMACアドレスを取得し...
-
Excel VBAで、 ヘッダーへのセ...
-
Excle VBA Findメソッドについて
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
テキストボックスのvalueとtext...
-
値を返さないコード パス
-
VB.NETでコンボボックスの1行目...
-
VBA ドロップダウンリストを残...
-
C#の質問です
-
vb6のVSFlexGridで選択行、列の...
-
VB.NETでアクティブなformを知...
-
Excel VBAのリストボックスの値...
-
VB.NETのスクロールバーコント...
-
PL/SQLでのTO_DATEの時間取得に...
-
ユーザーフォームのテキストボ...
-
VBA(自然数)
-
マクロ 特定のセル値のみクリ...
-
マクロで奇数と偶数の値を2か所...
-
ACCESS VBA 画像ファ...
-
変数に代入してある数値を表示...
-
【ASP.NET】 DataTextFieldの値...
-
チェックした値を取得したい(C...
-
変数名の取得
-
windowsアプリケーションで小数...
おすすめ情報