Windows Programming - WM_PAINT
WM_PAINT
事件可以說是最常見的一種Window事件之一。它提示了窗口的刷新,當窗口需要繪制時,就會發出。
窗口的繪制的觸發有很多種
- 從最小化回復
- 窗口大小改變
- 變為關注的窗口
- …
例子 1
1 | WNDCLASS wc; |
style
設置好後,當垂直以及水平方向的大小改變時,就會發出WM_PAINT
。
例子 2
1 | LRESULT CALLBACK WndProc (HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) { |
MessageBox
會導致當前控制的主窗口變為MessageBox。關閉MessageBox後,主窗口變回應用程序的窗口,這時候窗口需要ReDraw,因此發出WM_PAINT
。這種情況會變成死循環。
WM_PAINT
はWindowが描画するとき、発送します。
Windowを描画する場合
- Minimiseから回復するとき
- Windowのサイズが変更するとき
- 注目するWindowになるとき
- …
例 1
1 | WNDCLASS wc; |
style
をセットして、垂直や水平の方向のサイズが変わると、WM_PAINT
を発送する。
例 2
1 | LRESULT CALLBACK WndProc (HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) { |
MessageBox
が表示している場合、Main WindowはMessageBoxになります。MessageBoxを閉じると、Main WindowはまたアプリケーションのWindowになって再描画します。そのため、WM_PAINT
を発送します。上のコード場合、無限ループになってしまいます。
All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.
Comment