ボタンの色変更 – プログラミング – Home

通知
すべてクリア

[解決済] ボタンの色変更


koto
 koto
(@koto)
ゲスト
結合: 23年前
投稿: 7
Topic starter  

みなさん、はじめまして。

ボタンの色を変更したくて
http://www.codeguru.com/buttonctrl/color_button.shtml
過去ログを探し、上記のページのデモをダウンロードしました。

しかし実行してみると以下のようなエラーがでてしまいます。
「error C2664: 'DrawButtonText' : cannot convert parameter 3 from 'unsigned
short *' to 'const char *'」

どこか設定しなおさないと動かないのでしょうか?
どなたか使用された方いませんか?
アドバイスをお願いします。

eMbedded Visual C++ 3.0 を使用しています。


引用未解決
トピックタグ
MuraMura
 MuraMura
(@MuraMura)
ゲスト
結合: 23年前
投稿: 5
 

>しかし実行してみると以下のようなエラーがでてしまいます。
>「error C2664: 'DrawButtonText' : cannot convert parameter 3 from 'unsigned
> short *' to 'const char *'」

実行してみると? コンパイルエラーですよね?

…,const char *Buf,… を
…, LPCTSTR Buf,… に変えてみましょう!

eMbeddedはUNICODEですね。


返信引用
koto
 koto
(@koto)
ゲスト
結合: 23年前
投稿: 7
Topic starter  

MuraMuraさん

ありがとうございます。
アドバイス通りに直したら
コンパイルは通りました。

けどビルドをするとまた
新たにエラーがでてしまいました。
「error LNK2001: unresolved external symbol _WinMain@16
X86EMDbg/colorBtnSampleDlg.exe」

これは何がいけないのでしょうか?


返信引用
MuraMura
 MuraMura
(@MuraMura)
ゲスト
結合: 23年前
投稿: 5
 

>新たにエラーがでてしまいました。
>「error LNK2001: unresolved external symbol _WinMain@16
>X86EMDbg/colorBtnSampleDlg.exe」

これはリンクエラーですよね?
意味はわかりますよね?

>これは何がいけないのでしょうか?

御自身のプロジェクトに問題があるとしか言いようがないです。


返信引用
koto
 koto
(@koto)
ゲスト
結合: 23年前
投稿: 7
Topic starter  

デモプログラムはなんとか動くようになりました。

次に、自分で作っているプログラムに組み込んでみました。
エラーはでないのですが
実行すると変な動きをしてしまいます。

Top画面からボタンを押して次の画面に移動するのですが
(色をつけたいボタンは次の画面にあります)
移動ボタンを押したとたんにプログラムが終わってしまいます。

デモプログラムが置いてあるページの使用方法で
試してみたのですが
このような症状がでてしまいました。
組み込む際に何か必要なのでしょうか?


返信引用
MuraMura
 MuraMura
(@MuraMura)
ゲスト
結合: 23年前
投稿: 5
 

>デモプログラムはなんとか動くようになりました。

色は表示されているのですね?

>Top画面からボタンを押して次の画面に移動するのですが
>(色をつけたいボタンは次の画面にあります)
>移動ボタンを押したとたんにプログラムが終わってしまいます。

色をつける処理を外しても同じ結果になりますか?

>組み込む際に何か必要なのでしょうか?

情報が少なすぎます。


返信引用
koto
 koto
(@koto)
ゲスト
結合: 23年前
投稿: 7
Topic starter  

>色をつける処理を外しても同じ結果になりますか?

いえ、処理を外すとちゃんと次画面は表示されます。
処理はこんな感じで書いています。
VERIFY(m_btn1.Attach(IDC_BUTTON1, this, CYAN, BLUE, DKCYAN));

ボタンもオーナー描画に設定しています。
色情報も設定しています。
ex)const COLORREF BLUE = RGB(0, 0, 255);


返信引用
MuraMura
 MuraMura
(@MuraMura)
ゲスト
結合: 23年前
投稿: 5
 

>処理はこんな感じで書いています。
>VERIFY(m_btn1.Attach(IDC_BUTTON1, this, CYAN, BLUE, DKCYAN));

CodeGuruのサンプルには引数がもう一つあるようですが、
そのあたりはご自分で改変されたのでしょうか?

私のところでは問題なく表示されますよ。colorbtn.hとcppはそのまんまですけど。


返信引用
koto
 koto
(@koto)
ゲスト
結合: 23年前
投稿: 7
Topic starter  

使用例やデモプログラムには↓のように書かれていますよね。
VERIFY(m_btn1.SetColors(IDOK, this, CLOUDBLUE, DKBLUE, WHITE));

足りない引数とは
「const UINT nBevel = 2」
この部分のことですか?


返信引用
MuraMura
 MuraMura
(@MuraMura)
ゲスト
結合: 23年前
投稿: 5
 

>使用例やデモプログラムには↓のように書かれていますよね。
>VERIFY(m_btn1.SetColors(IDOK, this, CLOUDBLUE, DKBLUE, WHITE));

失礼しました。最後の引数はデフォルトのようですね。

あと考えられるのは、

>VERIFY(m_btn1.Attach(IDC_BUTTON1, this, CYAN, BLUE, DKCYAN));

この処理をコンストラクタで処理してるとか...?
うーむ、スイマセン。私にはお手上げです。(>_<)


返信引用
koto
 koto
(@koto)
ゲスト
結合: 23年前
投稿: 7
Topic starter  

MuraMuraさん

いろいろアドバイスありがとうございます。
こちらのプログラムの組み方がいけないのかもしれませんね。

もうちょっと頑張ってみます。


返信引用
koto
 koto
(@koto)
ゲスト
結合: 23年前
投稿: 7
Topic starter  

もうちょっと頑張った結果
ボタンの色を変えることができました。

うまくいかなかった原因は
ボタンにメンバ変数を持たせていたことだと思います。
メンバ変数を外したらうまく表示されました。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました