アプリ版:「スタンプのみでお礼する」機能のリリースについて

僕の読んでいる参考書に、要約すると、
「WNDCLAS構造体の背景ブラシにシステムカラーを表す定数を設定する場合は、値に1を加算してください」
と書かれているのですが、その理由が書いてありません。
値に1を加算する理由は何故でしょうか?ご教授お願いします。

A 回答 (1件)

一次資料が見つからなかったのですが、定義されている値の中に'0' が存在しているので


それを避けるために +1 していたと聞いたことがあります。

#include <stdio.h>
#define WIN32_EXTRA_LEAN
#define WIN32_LEAN_AND_MEAN
#include <windows.h>

#define PUT_VAL_AND_NAME(x) printf("%s=%d\n", #x, x)

int main()
{
PUT_VAL_AND_NAME(COLOR_ACTIVEBORDER);
PUT_VAL_AND_NAME(COLOR_HIGHLIGHTTEXT);
PUT_VAL_AND_NAME(COLOR_ACTIVECAPTION);
PUT_VAL_AND_NAME(COLOR_INACTIVEBORDER);
PUT_VAL_AND_NAME(COLOR_APPWORKSPACE);
PUT_VAL_AND_NAME(COLOR_INACTIVECAPTION);
PUT_VAL_AND_NAME(COLOR_BACKGROUND);
PUT_VAL_AND_NAME(COLOR_MENU);
PUT_VAL_AND_NAME(COLOR_BTNFACE);
PUT_VAL_AND_NAME(COLOR_MENUTEXT);
PUT_VAL_AND_NAME(COLOR_BTNSHADOW);
PUT_VAL_AND_NAME(COLOR_SCROLLBAR);
PUT_VAL_AND_NAME(COLOR_BTNTEXT);
PUT_VAL_AND_NAME(COLOR_WINDOW);
PUT_VAL_AND_NAME(COLOR_CAPTIONTEXT);
PUT_VAL_AND_NAME(COLOR_WINDOWFRAME);
PUT_VAL_AND_NAME(COLOR_GRAYTEXT);
PUT_VAL_AND_NAME(COLOR_WINDOWTEXT);
PUT_VAL_AND_NAME(COLOR_HIGHLIGHT);

return 0;
}

実行結果:
>hanamogera
COLOR_ACTIVEBORDER=10
COLOR_HIGHLIGHTTEXT=14
COLOR_ACTIVECAPTION=2
COLOR_INACTIVEBORDER=11
COLOR_APPWORKSPACE=12
COLOR_INACTIVECAPTION=3
COLOR_BACKGROUND=1
COLOR_MENU=4
COLOR_BTNFACE=15
COLOR_MENUTEXT=7
COLOR_BTNSHADOW=16
COLOR_SCROLLBAR=0 ← これ
COLOR_BTNTEXT=18
COLOR_WINDOW=5
COLOR_CAPTIONTEXT=9
COLOR_WINDOWFRAME=6
COLOR_GRAYTEXT=17
COLOR_WINDOWTEXT=8
COLOR_HIGHLIGHT=13

参考:
http://mtbeta.msdn.microsoft.com/ja-jp/library/a …
    • good
    • 0
この回答へのお礼

なるほど・・。参考になりました。
ありがとうございます。

お礼日時:2008/02/25 16:53

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!