このツールバー、問題だらけでした。
ツールバーを使うためには、"commctrl.h" をincludeし、"ComCtl32.lib" をlinkする必要があります。
ComCtl32.libはコンパイラが自動的にlinkしてくれるので、ソースでは、commctrl.hをincludeするだけです。
いつものように本を見ながらソース入力。
まず、「未解決の外部シンボル」エラー。
ツールバー関連の関数本体が行方不明らしいです。ちゃんとincludeしてlinkできているはずなのに。
ComCtl32.libをプロジェクトに入れて、コンパイルしてみたら解決。
linkの設定、間違ってたんでしょうか?
次、「"○○"の命令が"△△"のメモリを参照しました。メモリが"read"になることはできませんでした。」エラー。
ここの解決に時間がかかりました。
CreateToolbarEx関数を実行するところでエラーが出て停止してしまうのです。
引数がまずいのか、リソースがまずいのか、bmpがまずいのか、原因がまったく不明。
本を見てもよくわからない引数があります。ひとまず、無視。
リソースはほぼ手書き状態。本についてきたリソースファイルはエディタ製で比較できない。
とりあえず、本についてきたお手本のbmpを使ってみる。
すると、動いた!
どうやら、ここに原因があるようです。
ならば、自作bmpとお手本bmpとの違いは何か?
- 絵柄(違って当然といえば当然)
- 画像のサイズ(幅と高さ)
- ファイルのサイズ(○○バイト)
- ビットの深さ(プロパティにて発見)
それに、幅・高さはそんなに違わないのにファイルサイズがけっこう違う。
どうやら、これは色数の違いみたいです。
ペイントで開いて名前を付けて保存を選ぶと、bmpでも24bit、256色、16色、モノクロの4種があります。ここで気付きました。
いつも使っているペイントソフトのbmp形式保存は単にbmpのみ。
自作bmpは24bit、お手本bmpは16色。
カーソルのときと同じような原因でしたね。
いろいろ試してみると、24bitのときにエラーが出ます。
0 件のコメント:
コメントを投稿