- ベストアンサー
windowsプログラミング勉強中のちょっとした疑問
僕の読んでいる参考書に、要約すると、 「WNDCLAS構造体の背景ブラシにシステムカラーを表す定数を設定する場合は、値に1を加算してください」 と書かれているのですが、その理由が書いてありません。 値に1を加算する理由は何故でしょうか?ご教授お願いします。
- みんなの回答 (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/aa925944.aspx?altlang=ja-jp
お礼
なるほど・・。参考になりました。 ありがとうございます。