2009年12月5日土曜日

ステータスバーとアイコン


 ステータスバーにアイコンを表示するときは

SendMessage( hStatusWnd, SB_SETICON, 0, reinterpret_cast<LPARAM>(hIcon) );

などとすればいいが、アイコンの読み込み方によって表示のされ方に違いが出るようだ。上の画像はLoadImage関数で読み込んだもの。LoadIcon関数で読み込むと下の画像のようになる。要注意。




 ステータスバーに区切りを付けたいとき、


int iRight[] = { 100, 200, 380, 450 };
SendMessage( hStatusWnd, SB_SETPARTS, sizeof(iRight)/sizeof(*iRight), reinterpret_cast<LPARAM>(iRight) );


のようにする。このとき自分がはまったのが、指定する数値はてっきり横幅だとばかり思っていて

int iRight[] = { 100, 100, 100, 100 };

とかやって、おっかしいなあ、ぜんぜん区切られないけどなんなのこれ? と歯をギリギリしてた。正しくは位置を設定する。要注意。



 使用するアイコンをすべてリソースに追加したところ、実行ファイル.exeのアイコンが意図しないものになった。実行ファイルに設定されるアイコンはIDが一番若いものになるので、#defineなどで数値に置換し、実行ファイルに設定したいアイコンが一番若いIDになるよう修正する。要注意。プログラム中でアイコンを読み込む時は
LoadIcon( hInstance, TEXT("ICON_RESOURCE_NAME") );
から
LoadIcon( hInstance, MAKEINTRESOURCE(ICON_RESOURCE_NAME) );
といった具合に変更する。

0 件のコメント: