ステータスバーにアイコンを表示するときは
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 件のコメント:
コメントを投稿