1,建立插入符:
void createsolidcaret( int nwidth, int nheight );//建立插入符
void createcaret( cbitmap* pbitmap );//建立位圖插入符
void showcaret( );//顯示插入符
void hidecaret( );//隱藏插入符
static void pascal setcaretpos( point point );//移動插入符號
說明:1)建立插入符要在視窗建立完成之後,createsolidcaret函式建立的插入符被初始化為隱藏,所以需要呼叫showcaret()將其顯示。
2)使用createcaret函式建立位圖插入符的時候,不能使用區域性的點陣圖物件關聯位圖資源。(與資源相關聯的c++物件,當它析構的時候會同時把與它相關聯的資源銷毀。)
2,獲取當前字型資訊的度量:cdc::gettextmetrics
bool gettextmetrics( lptextmetric lpmetrics ) const;
說明:typedef struct tagtextmetric textmetric;
3,ondraw函式:
virtual void ondraw( cdc* pdc )
當視窗(從無到有或尺寸大小改變等)要求重繪的時候,會傳送wm_pain訊息,呼叫ondraw函式進行重繪。
4,獲取字串的高度和寬度(區別字串的長度):
cdc::gettextextent
csize gettextextent( lpctstr lpszstring, int ncount ) const;
csize gettextextent( const cstring& str ) const;
說明:the csize class is similar to the windows size structure。
typedef struct tagsize size;
5,路徑層:
bool beginpath( );
//在這作圖定義路徑層剪下區域
bool endpath( );
bool selectclippath( int nmode );//呼叫這個函式來使當前路徑層剪下區域與新剪下區域進行互操作。
//在這覆蓋作圖(包含前定義的路徑層區域)定義新的剪下區域
6,關於文字字串一些函式:
colorref getbkcolor( ) const;//得到背景顏色
virtual colorref setbkcolor( colorref crcolor );//設定背景顏色
bool settextbkcolor( colorref cr );//設定文字背景顏色
virtual colorref settextcolor( colorref crcolor );//設定文字顏色
virtual bool textout( int x, int y, lpctstr lpszstring, int ncount );//輸出文字
bool textout( int x, int y, const cstring& str );
cstring left( int ncount ) const;//得到字串左邊ncount個字元
int getlength( ) const;//得到字串長度
7,字型cfont::cfont
cfont( );//建構函式
//constructs a cfont object. the resulting object must be initialized with createfont, createfontindirect, createpointfont, or createpointfontindirect before it can be used.
選用字型事例**組:
cclientdc dc(this);
cfont font;//構造字型物件
font.createpointfont(300,"華文行楷",null);//初始化字型物件,與字型資源相關聯
cfont *poldfont=dc.selectobject(&font);//將新字型選入dc
...dc.selectobject(poldfont);//恢復原字型
說明:1)構造字型物件時候,必須初始化。(初始化是將字型物件與字型資源相關聯)。
2)初始化物件時候,選用的字型也可以是系統字型,但不一定都有效,據測試選用。
8,在mfc中ceditview 和 cricheditview類已經完成了初步的文書處理。可以讓應用程式的view類以ceditview 和 cricheditview類為基類。
9,平滑變色
cdc::textout()是乙個字母乙個字母的輸出,達不到平滑效果。
cdc::drawtext():將文字的輸出侷限於乙個矩形區域,超出矩形區域的文字都被截斷。利用這一特點,可每隔些時間增加矩形大小,從而可實現人眼中的平滑效果。
cwnd::settimer():設定定時器。按設定的時間定時傳送wm_timer訊息。
說明:uint settimer( uint nidevent, uint nelapse, void (callback export* lpfntimer)(hwnd, uint, uint, dword) );
//nidevent定時器標示,nelapse訊息傳送間隔時間,void (callback export* lpfntimer)(hwnd, uint, uint, dword)設定**函式,如果設定則由設定的**函式處理wm_timer訊息,如果沒有設定**函式設為null,這傳送的wm_timer訊息壓入訊息佇列,交由相關聯的視窗處理(新增wm_timer訊息處理函式ontimer())。
afx_msg void ontimer( uint nidevent );
//響應wm_timer訊息,nidevent為訊息對應定時器標示(可以設定不同的定時器傳送wm_timer訊息)
問題:1,在ccareview類中新增wm_create訊息響應函式oncreate(),wm_create訊息是在什麼時候被檢查到而被響應的呢?
(猜測:新增wm_create訊息後,訊息被壓入訊息佇列,然後經過訊息迴圈進行分發到具體視窗,從而進行響應)
2,現有一文字檔案內容已經讀入串str中,要求在檢視客戶區按原先文字檔案中的格式輸出。
問題是,利用cdc的textout()來在cview類派生類視窗中輸出串時,忽略了串中的tab、回車換行等格式,無論串有多長均在一行上輸出。
這其中是cdc類成員函式textout()忽略串中格式的,還是cview類派生類視窗設定從中做怪呢?怎麼解決?
第五章 文字
第五章 文字 用省略號 顯示溢位文字 text overflow 值 clip ellipsis clip 裁剪溢位內容 ellipsis 用省略號顯示溢位內容 說明 要實現ellipsis效果,還要宣告overflow為hidden,如果文字本來只有一行,想在一行內顯示,還需宣告white spa...
程式設計珠璣第五章
直接來習題吧 1 第一題可以看一下林銳的高質量c c 程式設計 2 3 4 5 第五題很明顯不應該每次都用 for i 0 i n 1 i assert a i a i 1 如何利用二分的性質來進行處理還是乙個問題。一種辦法是 int bs int a,int b,int e,int v retur...
C程式設計第五章
include 10.前20項和 int main printf 12.10f sum return 0 11.小球10次 int main printf 十次高度 10.6f t經過距離 10.6f n h,s return 0 12.猴子吃桃 誰家的猴子家裡能放下一千多個桃 int main p...