We can invalidate in the last part of windows-thread.
In main-thread, we set check_invalidate from 0 to 1.
The main-thread ensured the flag.
---
winmain_001.cpp Wed Mar 31 07:23:49 2021 ... 628 :static LRESULT CALLBACK mainWindowProc ( HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam ) 629 :{ ... 733 : if ( check_invalidate == 1 ) { 734 : printf("InvalidateRect: starts.\r\n"); 735 : InvalidateRect( hWnd, NULL, TRUE); 736 : check_invalidate = 0; 737 : printf("InvalidateRect: ends.\r\n"); 738 : } 739 : 740 : switch ( btc.Processed ) { 741 : case 0: 742 : break; 743 : case 1: 744 : btc.Processed = 0; 745 : return 0; 746 : case 2: 747 : btc.Processed = 0; 748 : return DefWindowProc( hWnd, uMsg, wParam, lParam ); 749 : default: 750 : return 0; 751 : } 752 : 753 : return 0; 754 :}
---
m_mode case 3 Animation_times 4
WM_MESSG 003: 15 *(p_evt->uMsg):0
wButtonController::Process: START 0 / 15<-WM_PAINT wParam -352252179 lParam 0 this->event->uMsg:2685472 *(this->event->u
Msg)=0 this->event->Type=15
wButtonController::WM_PAINT: 15 START
void wButtonController::ProcessWmPaint () starts.
this->event->main_mode = 3
default:
this->drawButtons( hdc ); starts.
this->drawButtons( hdc ); ends.
this->paintCanvas( hWnd, uMsg, wParam, lParam ) ; starts.
void wButtonController::paintCanvas ( HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam ) CursolNumber 3 starts.
void wButton::paintCanvas ( HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam ) starts.void wButton::paintCanvas ( HWND
hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam ) ends.void wButtonController::paintCanvas ( HWND hWnd, UINT uMsg, WPARAM
wParam, LPARAM lParam ) ends.
this->paintCanvas( hWnd, uMsg, wParam, lParam ) ; ends.
void wButtonController::ProcessWmPaint () ends.
wButtonController::WM_PAINT: 15 END
wButtonController::Process: END 0 / 15<-WM_PAINT wParam -352252179 lParam 0 this->event->uMsg:2685472 *(this->event->uMs
g)=0 this->event->Type=15
WM_MESSG 004: 15 *(p_evt->uMsg):0 uMsg:15 p_evt->uMsg: 2685472 &uMsg: 2686020
WM_PAINT 005: 15 *(p_evt->uMsg):0 uMsg: 15
WM_PAINT 006: 15 *(p_evt->uMsg):0 uMsg: 15 btc.Process 1
InvalidateRect: starts.
InvalidateRect: ends.
WM_MESSG 000: hWnd 1114902: uMsg 134: wParam 0: lParam 0: canvas 4350356: btc 4350368: *(p_evt->uMsg) 134:
WM_MESSG 003: 134 *(p_evt->uMsg):134
wButtonController::Process: START 134 / 15<-WM_PAINT wParam 0 lParam 0 this->event->uMsg:2686072 *(this->event->uMsg)=13
4 this->event->Type=15
wButtonController::WM_PAINT: 15 START
void wButtonController::ProcessWmPaint () starts.
this->event->main_mode = 3
default:
this->drawButtons( hdc ); starts.
this->drawButtons( hdc ); ends.
this->paintCanvas( hWnd, uMsg, wParam, lParam ) ; starts.
void wButtonController::paintCanvas ( HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam ) CursolNumber 3 starts.
void wButton::paintCanvas ( HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam ) starts.void wButton::paintCanvas ( HWND
hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam ) ends.void wButtonController::paintCanvas ( HWND hWnd, UINT uMsg, WPARAM
wParam, LPARAM lParam ) ends.
this->paintCanvas( hWnd, uMsg, wParam, lParam ) ; ends.
void wButtonController::ProcessWmPaint () ends.
wButtonController::WM_PAINT: 15 END
wButtonController::Process: END 134 / 15<-WM_PAINT wParam 0 lParam 0 this->event->uMsg:2686072 *(this->event->uMsg)=134
this->event->Type=15
WM_MESSG 004: 134 *(p_evt->uMsg):134 uMsg:134 p_evt->uMsg: 2686072 &uMsg: 2686072
WM_MESSG 000: hWnd 1114902: uMsg 15: wParam 0: lParam 0: canvas 4350356: btc 4350368: *(p_evt->uMsg) 15:
WM_PAINT 001: 15 *(p_evt->uMsg):15 uMsg: 15
WM_MESSG 000: hWnd 1114902: uMsg 20: wParam -352252179: lParam 0: canvas 4350356: btc 4350368: *(p_evt->uMsg) 20:
WM_MESSG 003: 20 *(p_evt->uMsg):20
wButtonController::Process: START 20 / 15<-WM_PAINT wParam -352252179 lParam 0 this->event->uMsg:2685472 *(this->event->
uMsg)=20 this->event->Type=15
wButtonController::WM_PAINT: 15 START
void wButtonController::ProcessWmPaint () starts.
this->event->main_mode = 3
default:
this->drawButtons( hdc ); starts.
this->drawButtons( hdc ); ends.
this->paintCanvas( hWnd, uMsg, wParam, lParam ) ; starts.
void wButtonController::paintCanvas ( HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam ) CursolNumber 3 starts.
void wButton::paintCanvas ( HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam ) starts.void wButton::paintCanvas ( HWND
hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam ) ends.void wButtonController::paintCanvas ( HWND hWnd, UINT uMsg, WPARAM
wParam, LPARAM lParam ) ends.
this->paintCanvas( hWnd, uMsg, wParam, lParam ) ; ends.
void wButtonController::ProcessWmPaint () ends.
wButtonController::WM_PAINT: 15 END
wButtonController::Process: END 20 / 15<-WM_PAINT wParam -352252179 lParam 0 this->event->uMsg:2685472 *(this->event->uM
sg)=20 this->event->Type=15
WM_MESSG 004: 20 *(p_evt->uMsg):20 uMsg:20 p_evt->uMsg: 2685472 &uMsg: 2685472
m_mode case 3 Animation_times 3
---