回答編集履歴
2
追記
answer
CHANGED
@@ -14,4 +14,46 @@
|
|
14
14
|
:
|
15
15
|
:
|
16
16
|
```
|
17
|
-
デバッガで止めてみて、どのような値が入っているか確認してみてください。
|
17
|
+
デバッガで止めてみて、どのような値が入っているか確認してみてください。
|
18
|
+
|
19
|
+
**追記**
|
20
|
+
コメントから513という値が返ってきていた、とのことで、この見方を書いておきます。
|
21
|
+
まず513という値を16進数で表示します(Windows付属の電卓でやるなり、VisualStudioの機能で16進表示するなりしてみてください)。
|
22
|
+
そうすると、
|
23
|
+
```
|
24
|
+
513 = 0x201
|
25
|
+
```
|
26
|
+
であることがわかると思います。次に、commctrl.hのCDIS_GRAYED辺りを調べると、
|
27
|
+
```c
|
28
|
+
// itemState flags
|
29
|
+
#define CDIS_SELECTED 0x0001
|
30
|
+
#define CDIS_GRAYED 0x0002
|
31
|
+
#define CDIS_DISABLED 0x0004
|
32
|
+
#define CDIS_CHECKED 0x0008
|
33
|
+
#define CDIS_FOCUS 0x0010
|
34
|
+
#define CDIS_DEFAULT 0x0020
|
35
|
+
#define CDIS_HOT 0x0040
|
36
|
+
#define CDIS_MARKED 0x0080
|
37
|
+
#define CDIS_INDETERMINATE 0x0100
|
38
|
+
#if (NTDDI_VERSION >= NTDDI_WINXP)
|
39
|
+
#define CDIS_SHOWKEYBOARDCUES 0x0200
|
40
|
+
#endif
|
41
|
+
#if (NTDDI_VERSION >= NTDDI_VISTA)
|
42
|
+
#define CDIS_NEARHOT 0x0400
|
43
|
+
#define CDIS_OTHERSIDEHOT 0x0800
|
44
|
+
#define CDIS_DROPHILITED 0x1000
|
45
|
+
#endif
|
46
|
+
```
|
47
|
+
という記述が見つかると思います。つまり0x201は上記状態フラグで言うと
|
48
|
+
|
49
|
+
```
|
50
|
+
0x201 = CDIS_SELECTED + CDIS_SHOWKEYBOARDCUES
|
51
|
+
```
|
52
|
+
であることがわかります。つまり選択されているということと、キーボードキューであるという複数の状態が含まれています。
|
53
|
+
選択状態の時に、フォーカスが無くても色をグレーに変えたくなければ、
|
54
|
+
```C++
|
55
|
+
if (lplvcd->nmcd.uItemState & CDIS_SELECTED) {
|
56
|
+
:
|
57
|
+
:
|
58
|
+
```
|
59
|
+
のように条件を変えて、背景青の文字色白で描き直してやれば良い、ということになります。特に色を変える必要がない場合、標準の処理を通るように記述するか、ご自身でデフォルトの色で描いてやらないと色が戻らないかもしれません。この辺りは実際に動かしてみて調整してください。
|
1
追記
answer
CHANGED
@@ -13,4 +13,5 @@
|
|
13
13
|
if (lplvcd->nmcd.uItemState & CDIS_GRAYED) {
|
14
14
|
:
|
15
15
|
:
|
16
|
-
```
|
16
|
+
```
|
17
|
+
デバッガで止めてみて、どのような値が入っているか確認してみてください。
|