VC 技術內幕(第四版)筆記(第14章)

2021-04-02 07:41:09 字數 1752 閱讀 3365

第十四章:可重用框架視窗類

1, 可重用基類的設計:為某個工程所設計的類應該能夠被提取出來 ,使它進一步一般化後被應用於其他的應用程式。

2, 一些重要函式:

1)cframewnd::activateframe

virtual void activateframe( int ncmdshow = -1 );

//以ncmdshow作為引數呼叫cwnd::showwindow函式來顯示框架視窗(其選單檢視控制欄視窗也會被同時顯示)。ncmdshow決定視窗是最大化還是最小化等。

//在派生類中過載activateframe ,在ncmdshow傳遞給cframewnd::activateframe之前修改ncmdshow的值。還可以呼叫cwnd::setwindowplacement設定框架視窗的位置和尺寸並還可以設定控制欄的可視狀態。

2)cwnd::precreatewindow

virtual bool precreatewindow( createstruct& cs );

//precreatewindow在呼叫activateframe函式之前被框架呼叫,用以在視窗顯示之前改變其視窗的特性(特性主要參考:createstruct結構。

//在派生類中過載它,在cs傳給基類之前改變cs結構中值,從而實現定製(顯示)視窗。

3)在mdi中,主框架視窗的showwindow函式是由應用程式類initinstance函式呼叫,不是由cframewnd::activateframe函式呼叫。故要控制mdi主框架視窗的一些特性,應該在應用程式類initinstance函式中新增相應的**。

4,cstring類中,lpctstr並不是乙個指向cstring物件的指標,而是乙個用來代替const char*的unicode版本。

1) cstring str;

char ch="abcdefg";

strcpy(str.getbuffer(strlen(ch)),ch);

str.releasebuffer();

pdc->textout(0,0,str);

輸出:abcdefg

2) cstring str("abcdefg");

char ch[20];

strcpy(ch,lpctstr(str));

pdc->textout(0,0,ch);

輸出:abcdefg

說明:char *strcpy( char *strdestination, const char *strsource );

3)編寫帶字串引數的函式原則:

a,如果不改變字串內容:可以使用const char*形參,可以使用cstring&型別形參

b,如果改變字串內容,可以使用cstring&型別形參(當然可以使用指標,但這兒不建議)。

5,獲取視窗座標

getwindowplacement

//retrieves the show state and the normal (restored), minimized, and maximized positions of a window.

setwindowplacement(可以返回最大化前的螢幕座標)

//sets the show state and the normal (restored), minimized, and maximized positions for a window.

getwindowrect

//gets the screen coordinates of cwnd.

/

VC 技術內幕(第四版)筆記(第14章)

第十四章 可重用框架視窗類 1,可重用基類的設計 為某個工程所設計的類應該能夠被提取出來 使它進一步一般化後被應用於其他的應用程式。2,一些重要函式 1 cframewnd activateframe virtual void activateframe int ncmdshow 1 以ncmdsh...

演算法(第四版)1 4摘抄

我們會使用數學分析為演算法成本建立簡潔模型並使用實驗資料驗證這些模型。一 第乙個挑戰是 決定如何定量測量程式的執行時間?一般來說,數學模型中的對數項是不能忽略的,但在倍率假設中它在 效能的公式中的作用並不那麼重要。對於編寫的每個程式,你都需要能夠回答這個基本問題 該程式能在可接受的時間內處理這些資料...

演算法第四版1 4演算法分析 習題1 4 31

組成 headstack,tailstack,tempstack headstack的棧底為佇列的頭,棧頂與tailstack的棧底相連,tailstack的棧頂為佇列的尾。pushleft 放在headstack的最底部。若headstack為空,直接入棧,若不為空,全部倒入tempstack,入...