みなさん、はじめまして。
ボタンの色を変更したくて
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 を使用しています。
>しかし実行してみると以下のようなエラーがでてしまいます。
>「error C2664: 'DrawButtonText' : cannot convert parameter 3 from 'unsigned
> short *' to 'const char *'」
実行してみると? コンパイルエラーですよね?
…,const char *Buf,… を
…, LPCTSTR Buf,… に変えてみましょう!
eMbeddedはUNICODEですね。
MuraMuraさん
ありがとうございます。
アドバイス通りに直したら
コンパイルは通りました。
けどビルドをするとまた
新たにエラーがでてしまいました。
「error LNK2001: unresolved external symbol _WinMain@16
X86EMDbg/colorBtnSampleDlg.exe」
これは何がいけないのでしょうか?
>新たにエラーがでてしまいました。
>「error LNK2001: unresolved external symbol _WinMain@16
>X86EMDbg/colorBtnSampleDlg.exe」
これはリンクエラーですよね?
意味はわかりますよね?
>これは何がいけないのでしょうか?
御自身のプロジェクトに問題があるとしか言いようがないです。
デモプログラムはなんとか動くようになりました。
次に、自分で作っているプログラムに組み込んでみました。
エラーはでないのですが
実行すると変な動きをしてしまいます。
Top画面からボタンを押して次の画面に移動するのですが
(色をつけたいボタンは次の画面にあります)
移動ボタンを押したとたんにプログラムが終わってしまいます。
デモプログラムが置いてあるページの使用方法で
試してみたのですが
このような症状がでてしまいました。
組み込む際に何か必要なのでしょうか?
>デモプログラムはなんとか動くようになりました。
色は表示されているのですね?
>Top画面からボタンを押して次の画面に移動するのですが
>(色をつけたいボタンは次の画面にあります)
>移動ボタンを押したとたんにプログラムが終わってしまいます。
色をつける処理を外しても同じ結果になりますか?
>組み込む際に何か必要なのでしょうか?
情報が少なすぎます。
>色をつける処理を外しても同じ結果になりますか?
いえ、処理を外すとちゃんと次画面は表示されます。
処理はこんな感じで書いています。
VERIFY(m_btn1.Attach(IDC_BUTTON1, this, CYAN, BLUE, DKCYAN));
ボタンもオーナー描画に設定しています。
色情報も設定しています。
ex)const COLORREF BLUE = RGB(0, 0, 255);
>処理はこんな感じで書いています。
>VERIFY(m_btn1.Attach(IDC_BUTTON1, this, CYAN, BLUE, DKCYAN));
CodeGuruのサンプルには引数がもう一つあるようですが、
そのあたりはご自分で改変されたのでしょうか?
私のところでは問題なく表示されますよ。colorbtn.hとcppはそのまんまですけど。
使用例やデモプログラムには↓のように書かれていますよね。
VERIFY(m_btn1.SetColors(IDOK, this, CLOUDBLUE, DKBLUE, WHITE));
足りない引数とは
「const UINT nBevel = 2」
この部分のことですか?
>使用例やデモプログラムには↓のように書かれていますよね。
>VERIFY(m_btn1.SetColors(IDOK, this, CLOUDBLUE, DKBLUE, WHITE));
失礼しました。最後の引数はデフォルトのようですね。
あと考えられるのは、
>VERIFY(m_btn1.Attach(IDC_BUTTON1, this, CYAN, BLUE, DKCYAN));
この処理をコンストラクタで処理してるとか...?
うーむ、スイマセン。私にはお手上げです。(>_<)
MuraMuraさん
いろいろアドバイスありがとうございます。
こちらのプログラムの組み方がいけないのかもしれませんね。
もうちょっと頑張ってみます。
もうちょっと頑張った結果
ボタンの色を変えることができました。
うまくいかなかった原因は
ボタンにメンバ変数を持たせていたことだと思います。
メンバ変数を外したらうまく表示されました。