文字色

ActiveBasicでのプログラミングでわからないこと、困ったことなどがあったら、ここで質問してみましょう(質問を行う場合は、過去ログやWeb上であらかじめ問題を整理するようにしましょう☆)。
返信する
メッセージ
作成者
今ランエボにエアロを..

文字色

#1 投稿記事 by 今ランエボにエアロを.. »

MainWndのEditBox1のフォント色をカラーダイアログで指定できるように
する機能がほしいのですが、わたしは初心者のため解説とソースを教えていただけませんか。初心者のくせにすみません。
7
記事: 473
登録日時: 2005年5月31日(火) 18:51
お住まい: 新潟県
連絡する:

Re: 文字色

#2 投稿記事 by 7 »

> MainWndのEditBox1のフォント色をカラーダイアログで指定できるように
> する機能がほしいのですが、わたしは初心者のため解説とソースを教えていただけませんか。初心者のくせにすみません。
「カラーダイアログ」とか「エディットボックスのフォント色」って検索しましたか?
検索すると分かりますけど、検索するだけで答えが分かることも多々ありますよ。

それでは。

まず、カラー選択ダイアログを表示するにはChooseColor()関数を使います。
グローバル領域(モジュールレベル)でDWord型変数 rgb を宣言しておいてください。 次はエディットボックスの文字色を変更します。
ウィンドウメッセージを監視して、WM_CTLCOLOREDITが送られたことが分かればエディットボックスの文字色を変更できます。
これはコールバック関数を改造するだけで済みます。 カラー選択ダイアログで色を取得した直後も文字色を変更しようとして、デバイスコンテキストのハンドルとエディットボックスのハンドルを指定したWM_CTLCOLOREDITを送信したんですけど、変わりませんね...。
あとWM_CTLCOLOREDITの処理が終わった後、何も返さずに関数を抜けてるので何か問題があるかもしれません。何も問題ないかもしれません。

ここら辺は宿題でしょうか。
今ランエボにエアロを..

無効..??what//.

#3 投稿記事 by 今ランエボにエアロを.. »

"rgb" 無効な識別子です

と出るのですが、何かの変数がかけてるっポくて何を書き込んだらよろしいでしょうか。

また、解説とソースをお願いします。 (反省)
7
記事: 473
登録日時: 2005年5月31日(火) 18:51
お住まい: 新潟県
連絡する:

Re: 無効..??what//.

#4 投稿記事 by 7 »

> 何かの変数がかけてるっポくて何を書き込んだらよろしいでしょうか。
グローバル領域(モジュールレベル)でDWord型変数 rgb を宣言しておいてください。
ちゃんと書いておいたんですけどね。
ということで下のように書きます。

コード: 全て選択

Dim rgb As DWord
Tomorrow
記事: 72
登録日時: 2005年6月04日(土) 10:09

Re: 文字色

#5 投稿記事 by Tomorrow »

7 さんが書きました:> カラー選択ダイアログで色を取得した直後も文字色を変更しようとして、デバイスコンテキストのハンドルとエディットボックスのハンドルを指定したWM_CTLCOLOREDITを送信したんですけど、変わりませんね...。
InvalidateRect()でエディットボックスを再描画してやると変わります。
7 さんが書きました:> あとWM_CTLCOLOREDITの処理が終わった後、何も返さずに関数を抜けてるので何か問題があるかもしれません。何も問題ないかもしれません。
ブラシハンドルを返すと余白の部分(テキスト部分の背景は除く)が、そのブラシの色になります。何も返さないとABの仕様上0が返ると考えられる(Function名の変数を0で初期化?)から、無効なハンドルということでデフォルト値(白)になるのでしょう。
今ランエボにエアロを..

ありがとうございました。

#6 投稿記事 by 今ランエボにエアロを.. »

またわからんことがありまして、今度は文字色ではなくEditBoxの色をカラー
ダイアログで選択する機能をつけたいのですが。どうすれば前回同様

ソースをお願いします。あとは自分でやりますので。
7
記事: 473
登録日時: 2005年5月31日(火) 18:51
お住まい: 新潟県
連絡する:

Re: ありがとうございました。

#7 投稿記事 by 7 »

> またわからんことがありまして、今度は文字色ではなくEditBoxの色をカラー
> ダイアログで選択する機能をつけたいのですが。どうすれば前回同様
前回同様、「エディットボックスのフォント色」とか「WM_CTLCOLOREDIT」って検索しましたか?
文字色を変更する方法と背景色を変更する方法が1ページにまとまっているサイトが多く見受けられます。
初心者だから検索ができないって訳じゃ、ないですよね?。

背景色はSetBkColor()関数でパッと、と思ったらそうでもなくてちゃんとブラシを用意しなくてはならないようです。
Tomorrowさん さんが書きました:InvalidateRect()でエディットボックスを再描画してやると変わります。
なるほど!InvalidateRect(インバリデートレクトと呼んでます)を使うんですね。
使う時は使うんですけど、思い付きませんでした...。
今ランエボにエアロを..

そうすると../

#8 投稿記事 by 今ランエボにエアロを.. »

何か、背景ではなくカーソル行の背景色になってしまって
EditBox全体の色を変えるにはどうすればできますかね。

ヘルプで検索しても関係無いものしか出てこなくて。
本当にいろいろと聞いてすみません。

お願いします。
7
記事: 473
登録日時: 2005年5月31日(火) 18:51
お住まい: 新潟県
連絡する:

Re: そうすると../

#9 投稿記事 by 7 »

> 何か、背景ではなくカーソル行の背景色になってしまって
> EditBox全体の色を変えるにはどうすればできますかね。
あー。手抜きコードだったので疎かになってる処理を見て出来てないって思ったんでしょうね。たぶん...。
とりあえず自分はChooseColor()関数が成功した場合、ちゃんとエディットボックスの背景色が変わります。

起動時、一行目だけが黒の背景色になりますけど、これは背景色を任意の値に初期化してないからです。

文字の背景色を持つ変数を宣言する時に適当な値に初期化してください。

コード: 全て選択

Dim rgbBack=RGB(255,255,255) As DWord	' 文字の背景色は白
> ヘルプで検索しても関係無いものしか出てこなくて。
ヘルプには関数の説明は載ってますけど、ダイレクトな解決策は書かれていません。
ヘルプを片っ端からじっくりと眺めてても解決することがあるんですけど、GoogleでググったりYahooでヤフったり(?)した方がいいですよ。
返信する