質問編集履歴

2

コメントの間違いの修正

2020/12/28 21:30

投稿

mery
mery

スコア27

test CHANGED
File without changes
test CHANGED
@@ -320,7 +320,7 @@
320
320
 
321
321
 
322
322
 
323
- //CDIS_DISABLED以外のCDIS_SELECTEDやCDIS_DISABLEDと比較してもうまくいかなかった
323
+ //CDIS_GRAYED以外のCDIS_SELECTEDやCDIS_DISABLEDと比較してもうまくいかなかった
324
324
 
325
325
  if (lplvcd->nmcd.uItemState == CDIS_GRAYED) {
326
326
 

1

ソースコードの変更

2020/12/28 21:30

投稿

mery
mery

スコア27

test CHANGED
File without changes
test CHANGED
@@ -200,104 +200,146 @@
200
200
 
201
201
  static HWND hbutton;
202
202
 
203
+ LPNMHDR lpnmhdr;
204
+
205
+ LPNMLVCUSTOMDRAW lplvcd;
206
+
207
+ switch (msg) {
208
+
209
+ case WM_CREATE:
210
+
211
+ InitCommonControls();
212
+
213
+
214
+
215
+ hbutton = CreateWindow(TEXT("BUTTON"), TEXT("ボタン"), WS_CHILD | WS_VISIBLE, 0, 0, 0, 0, hWnd, (HMENU)200, hinst, NULL);
216
+
217
+
218
+
219
+ hList = CreateWindowEx(0,WC_LISTVIEW,0,
220
+
221
+ WS_CHILD | WS_VISIBLE | LVS_REPORT | LVS_SINGLESEL | LVS_SHOWSELALWAYS,
222
+
223
+ 0, 0, 0, 0,
224
+
225
+ hWnd, (HMENU)100, hinst, NULL);
226
+
227
+
228
+
229
+ dwStyle = ListView_GetExtendedListViewStyle(hList);
230
+
231
+ dwStyle |= LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES;
232
+
233
+ ListView_SetExtendedListViewStyle(hList, dwStyle);
234
+
235
+
236
+
237
+ lvcol.mask = LVCF_FMT | LVCF_WIDTH | LVCF_TEXT | LVCF_SUBITEM;
238
+
239
+ lvcol.fmt = LVCFMT_LEFT;
240
+
241
+ lvcol.cx = 300;
242
+
243
+ lvcol.pszText = TEXT("タイトル1");
244
+
245
+ lvcol.iSubItem = 0;
246
+
247
+ ListView_InsertColumn(hList,0,&lvcol);
248
+
203
249
 
204
250
 
251
+ lvcol.pszText = TEXT("タイトル2");
252
+
205
- switch (msg) {
253
+ lvcol.iSubItem = 1;
254
+
206
-
255
+ ListView_InsertColumn(hList, 1, &lvcol);
256
+
257
+
258
+
207
- case WM_CREATE:
259
+ item.mask = LVIF_TEXT;
260
+
208
-
261
+ item.pszText = TEXT("文字列");
262
+
263
+ item.iItem = 0;
264
+
209
- InitCommonControls();
265
+ item.iSubItem = 0;
210
-
211
-
212
-
213
- hbutton = CreateWindow(TEXT("BUTTON"), TEXT("ボタン"), WS_CHILD | WS_VISIBLE, 0, 0, 0, 0, hWnd, (HMENU)200, hinst, NULL);
266
+
214
-
215
-
216
-
217
- hList = CreateWindowEx(0,WC_LISTVIEW,0,
267
+ ListView_InsertItem(hList,&item);
218
-
219
- WS_CHILD | WS_VISIBLE | LVS_REPORT | LVS_SINGLESEL | LVS_SHOWSELALWAYS,
220
-
221
- 0, 0, 0, 0,
222
-
223
- hWnd, (HMENU)100, hinst, NULL);
224
268
 
225
269
 
226
270
 
227
- dwStyle = ListView_GetExtendedListViewStyle(hList);
228
-
229
- dwStyle |= LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES;
230
-
231
- ListView_SetExtendedListViewStyle(hList, dwStyle);
232
-
233
-
234
-
235
- lvcol.mask = LVCF_FMT | LVCF_WIDTH | LVCF_TEXT | LVCF_SUBITEM;
236
-
237
- lvcol.fmt = LVCFMT_LEFT;
238
-
239
- lvcol.cx = 300;
240
-
241
- lvcol.pszText = TEXT("タイトル1");
242
-
243
- lvcol.iSubItem = 0;
244
-
245
- ListView_InsertColumn(hList,0,&lvcol);
246
-
247
-
248
-
249
- lvcol.pszText = TEXT("タイトル2");
250
-
251
- lvcol.iSubItem = 1;
252
-
253
- ListView_InsertColumn(hList, 1, &lvcol);
254
-
255
-
256
-
257
- item.mask = LVIF_TEXT;
258
-
259
271
  item.pszText = TEXT("文字列");
260
272
 
261
- item.iItem = 0;
273
+ item.iItem = 1;
262
274
 
263
275
  item.iSubItem = 0;
264
276
 
265
- ListView_InsertItem(hList,&item);
277
+ ListView_InsertItem(hList, &item);
266
-
267
-
278
+
279
+
268
280
 
269
281
  item.pszText = TEXT("文字列");
270
282
 
283
+ item.iItem = 0;
284
+
285
+ item.iSubItem = 1;
286
+
287
+ ListView_SetItem(hList, &item);
288
+
289
+
290
+
291
+ item.pszText = TEXT("文字列");
292
+
271
293
  item.iItem = 1;
272
294
 
273
- item.iSubItem = 0;
274
-
275
- ListView_InsertItem(hList, &item);
276
-
277
-
278
-
279
- item.pszText = TEXT("文字列");
280
-
281
- item.iItem = 0;
282
-
283
295
  item.iSubItem = 1;
284
296
 
285
297
  ListView_SetItem(hList, &item);
286
298
 
287
299
 
288
300
 
289
- item.pszText = TEXT("文字列");
290
-
291
- item.iItem = 1;
292
-
293
- item.iSubItem = 1;
294
-
295
- ListView_SetItem(hList, &item);
296
-
297
-
298
-
299
301
  break;
300
302
 
303
+ case WM_NOTIFY:
304
+
305
+
306
+
307
+ lpnmhdr = (LPNMHDR)lp;
308
+
309
+ if (lpnmhdr->code == NM_CUSTOMDRAW) {
310
+
311
+ lplvcd = (LPNMLVCUSTOMDRAW)lp;
312
+
313
+ switch (lplvcd->nmcd.dwDrawStage) {
314
+
315
+ case CDDS_PREPAINT:
316
+
317
+ return CDRF_NOTIFYITEMDRAW;
318
+
319
+ case CDDS_ITEMPREPAINT:
320
+
321
+
322
+
323
+ //CDIS_DISABLED以外のCDIS_SELECTEDやCDIS_DISABLEDと比較してもうまくいかなかった
324
+
325
+ if (lplvcd->nmcd.uItemState == CDIS_GRAYED) {
326
+
327
+ lplvcd->clrText = RGB(255, 255, 255);
328
+
329
+ lplvcd->clrTextBk = RGB(0, 0, 255);//行選択時の背景色が分からないので適当
330
+
331
+ }
332
+
333
+ break;
334
+
335
+ }
336
+
337
+
338
+
339
+ }
340
+
341
+ break;
342
+
301
343
  case WM_SIZE:
302
344
 
303
345
  MoveWindow(hList, 0, 0, LOWORD(lp), HIWORD(lp)/2, TRUE);