today,i learn from reading,keep moving.

 

Unicode是全新的編碼方式,其整合了包括以前的各種標準,而且擴展很平滑。但是這種雙字節的編碼方式使得原來適用於

單字節字符的幾乎所有方法都出現不同程度的異常,爲其推廣增加了難題,現在解決這種問題的方法是利用宏。宏可以通

過特定條件判別來確定到底是哪個版本的字符或字符串處理方法,從而實現新舊標準的一致性。爲了使我們的程序支持這

種兼容,一個很好的習慣是:將以前的char類型定義都習慣爲TCHAR,將字符串賦值都用TEXT宏來限定,等等。
windows中包含的c標準庫函數也提供了格式化的輸出函數,sprintf,fprintf等等;
隊列消息主要是那些由windows系統獲取的,比如鍵盤鍵入消息,鼠標點擊消息,屏幕移動消息等等,他們將存入消息隊列

,等待應用程序的消息檢索,檢索到後會通過windows系統dispatch到窗口的窗口過程中去處理;
非隊列消息往往是由於應用程序調用了系統的相關函數,入createwindows(),或點擊菜單等,觸發相關的消息會直接交

由窗口過程處理,而不進入消息隊列。
WM_NCPAINT()方法的重載實現窗口的初始隱藏問題。
WM_PAINT第一次調用是在winmain()初始化時的updatewindow時觸發的(窗口過程收到的第一條消息時WM_CREATE)。之後再窗口改變大小,覆蓋和恢復時會自動觸發

,或者調用InvalidateRect()和InvalidateRgn()來顯示強制生成WM_PAINT.與WM_PAINT相關的概念:
無效區域或者更新區域:有這類區域時纔會觸發wm_paint消息。
窗口過程處理WM_PAINT消息時,在調用BeginPaint函數後,整個客戶區就會變得有效。程序也可以調用validateRect函數

使客戶區中任何矩形變得有效。

DC(設備環境)在視頻顯示設備上,與特定的顯示窗口向關聯,其結構內部的屬性決定了當前繪製窗口的方式,比如字體

,顏色,背景色,座標等。在進行設備繪圖時,需要首先獲取該設備環境的句柄,在繪圖完畢後要釋放這個設備句柄。
windows程序通常有兩證方法獲取句柄:
1 beginpaint():擦去無效區域的背景使其有效,以便繪圖,填充PAINTSTRUCT結構。
endpaint函數()釋放DC句柄。背景不擦除:invalidateRect()最後一個參數設置爲FALSE。若想自己擦除背景,就要自

己響應WM_ERASEBKGUD消息。可以利用invalidateRect()來強制無效特定區域,從而實現WM_PAINT的作用範圍改變。
2.GetDC()作用範圍不是無效區域,而是整個客戶區,它的調用也不會使無效的客戶區有效化,需要自己調用函數ValitdateRect()來實現。此外GetWindowDC()方法可以獲取到對應該窗口的DC,作用範圍還有標題欄。 RealeaseDC()將釋放DC資源。


TextOut(hdc,x,y,psText,ilength)不支持回車、換行、製表和退格等字符。且不以\0爲結尾,而是利用指定的參數iLength來確定長度。x,y是邏輯座標。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章