staticコントロールの表示 非表示について

解決


geo  2003-08-25 02:51:38  No: 51979

Windows2000 VC6.0 MFCで開発をしています。
tabコントロールを使用して、ツールを作ろうと思っています。
tabコントロール内にstaticコントロールを配置したいのですが、
文字列を変えたいことと、表示・非表示を行いたいと思っています。

Editボックスを使用して読み取り専用で書こうかとも思ったのですが、
マウスでクリックするとカーソルが点滅するため、ちょっと採用を
保留にしています。
また、Editボックスのプロパティで[無効]にすると灰色になってしまうため、
この色を変えられるようであれば、採用したいと思っています。
CtlColorでは変えられませんでした。

何か良い方法がありましたら、お教えください。
よろしくお願いいたします。


YuO  2003-08-25 03:48:06  No: 51980

> tabコントロール内にstaticコントロールを配置したいのですが、
> 文字列を変えたいことと、表示・非表示を行いたいと思っています。

で?
それらは可能ですが……。

> また、Editボックスのプロパティで[無効]にすると灰色になってしまうため、
> この色を変えられるようであれば、採用したいと思っています。
> CtlColorでは変えられませんでした。

こちらはWM_CTLCOLORSTATIC(or OnCtlColor/CtlColor with CTLCOLOR_STATIC)で変更できます。


geo  2003-08-26 05:49:05  No: 51981

> で?
> それらは可能ですが……。

どのようにすればstatic コントロールを操作することができるのでしょうか?

> こちらはWM_CTLCOLORSTATIC(or OnCtlColor/CtlColor with CTLCOLOR_STATIC)で変更できます。

これは、
m_colStaticText = RGB(255,255,0);
とOnInitDialogで宣言しておいて OnCtlColor 内で
switch (nCtlColor) {
case CTLCOLOR_STATIC:
pDC->SetTextColor(m_colStaticText);
では変わらなかったのですが、


geo  2003-08-26 05:53:38  No: 51982

すみません、書き途中で送信してしまいました。

上記の書き方では、灰色のままだったため、どのように変えるのか
分かりませんでした。
どのようにすれば、変更できるのでしょうか?
よろしくお願いいたします。


YuO  2003-08-26 07:33:44  No: 51983

> どのようにすればstatic コントロールを操作することができるのでしょうか?

CWnd::SetWindowTextとかCWnd::ShowWindowとか。

> 上記の書き方では、灰色のままだったため、どのように変えるのか
> 分かりませんでした。

???
あなたが書いたコードを見ると,文字色が黄色になるはずですが。


geo  2003-08-26 21:37:43  No: 51984

YuOさん いつもありがとうございます。
> CWnd::SetWindowTextとかCWnd::ShowWindowとか。

CStatic *static1 = (CStatic*)GetDlgItem(IDC_STATIC1);
static1->SetWindowText("adf");

のように書いたらできました。他のコントロールと同じなんですね。
始め、IDC_STATIC を変えようと思ったら、エラーになってしまったため、
だめなのかと思いました。(^^ゞ

> あなたが書いたコードを見ると,文字色が黄色になるはずですが。

こちらは、リソースのプロパティで[無効]のチェックボックスをはずすと
色が黄色になるのですが、[無効]のチェックが付いた場合には、
色が灰色のままになってしまいます。

とりあえず、staticコントロールの操作方法が分かりましたので、
これでやりたいと思います。ありがとうございました。


geo  2003-08-26 22:42:55  No: 51985

解決したのを付け忘れました。すみません。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加