回答編集履歴

6

コード修正

2020/05/15 09:45

投稿

SHOMI
SHOMI

スコア4079

test CHANGED
@@ -100,7 +100,7 @@
100
100
 
101
101
  0);
102
102
 
103
- g_pSprite->Begin(NULL);
103
+ g_pSprite->Begin(0);
104
104
 
105
105
  g_pSprite->Draw(g_pTexture, &rc, &center, &position, 0xFFFFFFFF);
106
106
 

5

コード追記

2020/05/15 09:44

投稿

SHOMI
SHOMI

スコア4079

test CHANGED
@@ -49,3 +49,69 @@
49
49
  ```
50
50
 
51
51
  のようにメッセージループ内で`Present`してみてください。
52
+
53
+
54
+
55
+ ---
56
+
57
+ > 最小化ができなくなりました...
58
+
59
+ 最小化をしようとしたら、ウィンドウが再表示されます
60
+
61
+
62
+
63
+ 以下のコードで最小化も復元後の再表示も問題なくできています。
64
+
65
+ ```C++
66
+
67
+ while (msg.message != WM_QUIT)
68
+
69
+ {
70
+
71
+ if (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE))
72
+
73
+ {
74
+
75
+ TranslateMessage(&msg);
76
+
77
+ DispatchMessage(&msg);
78
+
79
+ continue;
80
+
81
+ }
82
+
83
+
84
+
85
+ m_pD3DDevice->BeginScene();
86
+
87
+
88
+
89
+ // ここに描画コード
90
+
91
+ m_pD3DDevice->Clear(0, NULL,
92
+
93
+ D3DCLEAR_TARGET |
94
+
95
+ D3DCLEAR_ZBUFFER,
96
+
97
+ D3DCOLOR_XRGB(0, 0, 0),
98
+
99
+ 1.0f,
100
+
101
+ 0);
102
+
103
+ g_pSprite->Begin(NULL);
104
+
105
+ g_pSprite->Draw(g_pTexture, &rc, &center, &position, 0xFFFFFFFF);
106
+
107
+ g_pSprite->End();
108
+
109
+
110
+
111
+ m_pD3DDevice->EndScene();
112
+
113
+ m_pD3DDevice->Present(NULL, NULL, NULL, NULL);
114
+
115
+ }
116
+
117
+ ```

4

DWMについて追記

2020/05/15 09:43

投稿

SHOMI
SHOMI

スコア4079

test CHANGED
@@ -1,3 +1,9 @@
1
+ メッセージループの前に一度`Present`を行っているだけの為、それ以降はDWMが保持している描画内容が表示されています。
2
+
3
+ おそらく最小化によりDWMが保持している描画内容がクリアされたのでしょう。
4
+
5
+
6
+
1
7
  ```C++
2
8
 
3
9
  while (GetMessage(&msg, NULL, 0, 0)) DispatchMessage(&msg);

3

コード修正

2020/05/15 07:41

投稿

SHOMI
SHOMI

スコア4079

test CHANGED
@@ -38,8 +38,6 @@
38
38
 
39
39
  m_pD3DDevice->Present(NULL, NULL, NULL, NULL);
40
40
 
41
- Sleep(16);
42
-
43
41
  }
44
42
 
45
43
  ```

2

コード修正

2020/05/14 14:03

投稿

SHOMI
SHOMI

スコア4079

test CHANGED
@@ -26,8 +26,6 @@
26
26
 
27
27
 
28
28
 
29
- m_pD3DDevice->Clear(0, NULL, D3DCLEAR_TARGET | D3DCLEAR_ZBUFFER, D3DCOLOR_XRGB(0, 0, 60), 1.0f, 0);
30
-
31
29
  m_pD3DDevice->BeginScene();
32
30
 
33
31
 
@@ -35,6 +33,8 @@
35
33
  // ここに描画コード
36
34
 
37
35
 
36
+
37
+ m_pD3DDevice->EndScene();
38
38
 
39
39
  m_pD3DDevice->Present(NULL, NULL, NULL, NULL);
40
40
 

1

コード追加

2020/05/14 14:01

投稿

SHOMI
SHOMI

スコア4079

test CHANGED
@@ -1 +1,47 @@
1
+ ```C++
2
+
3
+ while (GetMessage(&msg, NULL, 0, 0)) DispatchMessage(&msg);
4
+
5
+ ```
6
+
7
+ をやめて
8
+
9
+ ```C++
10
+
11
+ while (msg.message != WM_QUIT)
12
+
13
+ {
14
+
15
+ if (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE))
16
+
17
+ {
18
+
19
+ TranslateMessage(&msg);
20
+
21
+ DispatchMessage(&msg);
22
+
23
+ continue;
24
+
25
+ }
26
+
27
+
28
+
29
+ m_pD3DDevice->Clear(0, NULL, D3DCLEAR_TARGET | D3DCLEAR_ZBUFFER, D3DCOLOR_XRGB(0, 0, 60), 1.0f, 0);
30
+
31
+ m_pD3DDevice->BeginScene();
32
+
33
+
34
+
35
+ // ここに描画コード
36
+
37
+
38
+
39
+ m_pD3DDevice->Present(NULL, NULL, NULL, NULL);
40
+
41
+ Sleep(16);
42
+
43
+ }
44
+
45
+ ```
46
+
1
- メッセージループ内で`Present`してください。
47
+ のようにメッセージループ内で`Present`してみてください。