co_userredrawwindow函式是用來實現視窗重畫的功能,實現**如下:
#001 bool fastcall
#002 co_userredrawwindow(pwindow_object window, const rect* updaterect, hrgn updatergn,
#003 ulong flags)
#004
#018
#019 /*
#020 * step 2.
#021 * transform the parameters updatergn and updaterect into
#022 * a region hrgn specified in screen coordinates.
#023 */
#024
建立更新的區域。
#025 if (flags & (rdw_invalidate | rdw_validate))
#026
否則更新整個視窗。
#035 else
#036 ntgdioffsetrgn(hrgn, window->wnd->clientrect.left, window->wnd->clientrect.top);
#037 }
#038 else if (updaterect != null)
#039
#045 }
#046 else if ((flags & (rdw_invalidate | rdw_frame)) == (rdw_invalidate | rdw_frame) ||
#047 (flags & (rdw_validate | rdw_noframe)) == (rdw_validate | rdw_noframe))
#048
#052 else
#053
#057 }
#058
#059 /*
#060 * step 3.
#061 * adjust the window update region depending on hrgn and flags.
#062 */
#063
根據指定的區域進行更新。
#064 if (flags & (rdw_invalidate | rdw_validate | rdw_internalpaint | rdw_nointernalpaint) &&
#065 hrgn != null)
#066
#069
#070 /*
#071 * step 4.
#072 * repaint and erase windows if needed.
#073 */
#074
重新畫視窗。
#075 if (flags & (rdw_erasenow | rdw_updatenow))
#076
#079
#080 /*
#081 * step 5.
#082 * cleanup ;-)
#083 */
#084
#085 if (hrgn != null)
#086
#089
#090 return true;
#091 }
reactos作業系統實現 178
sendmessagew函式主要用來向視窗傳送訊息。下面就是它的實現 001 lresult winapi 002 sendmessagew hwnd wnd,003 uint msg,004 wparam wparam,005 lparam lparam 006 028 029 填寫訊息結構。03...
reactos作業系統實現 187
隨著全球化的發展,開發軟體都是面向多語言的環境。目前大多數程式都是採用不同字型來顯示不同語言的辦法,那麼有沒有一種更好的辦法,一種字型就可以解決全球語言的顯示呢?答案肯定的,它就是採用邏輯字型ms shell dlg和ms shell dlg2。比如開發應用程式時,就看到在資源裡可以設定ms she...
reactos作業系統實現 193
selectobject函式是將物件選定到指定的裝置場境中。具體實現 如下 001 hgdiobj 002 winapi 003 selectobject hdc hdc,004 hgdiobj hgdiobj 005 016 獲取選擇dc的物件正確的控制代碼。017 hgdiobj gdifixu...