API 6- 5日かかってツールバー

 メニュー、アイコン、カーソルと来て、次はツールバーです。
 このツールバー、問題だらけでした。

 ツールバーを使うためには、"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 件のコメント:

コメントを投稿