freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

vc入門教程(windows入門程序詳解)-資料下載頁

2025-06-26 00:11本頁面
  

【正文】 口過程。當Windows從環(huán)境,或從另一個應(yīng)用程序,或從用戶的應(yīng)用程序中得到消息時,它將調(diào)用窗口過程并將信息傳給此函數(shù)??傊?,窗口過程函數(shù)處理所有傳送到由此窗口類創(chuàng)建的窗口所得到的消息。并且窗口過程有義務(wù)處理Windows扔給它的任何消息。我們在學(xué)習(xí)Windows程序設(shè)計的時候,最主要的就是學(xué)習(xí)這些消息是什么以及是什么意思,它們是怎么工作的。令我們不解的是,在程序中我們看不出來是哪一個函數(shù)在調(diào)用窗口過程。,Windows把發(fā)生的輸入事件轉(zhuǎn)換成輸入消息放到消息隊列中,而消息循環(huán)將它們發(fā)送到相應(yīng)的窗口過程函數(shù),真正的處理是在窗口過程函數(shù)中執(zhí)行的,在Windows中就使用了回調(diào)函數(shù)來進行這種通信。回調(diào)函數(shù)是輸出函數(shù)中特殊的一種,它是指那些在Windows環(huán)境下直接調(diào)用的函數(shù)。一個應(yīng)用程序至少有一個回調(diào)函數(shù),因為在應(yīng)用程序處理消息時,Windows調(diào)用回調(diào)函數(shù)。這種回調(diào)函數(shù)就是我們前面提到的窗口過程,它對對應(yīng)于一個活動的窗口,回調(diào)函數(shù)必須向Windows注冊,Windows實施相應(yīng)操作即行回調(diào)。每個窗口必須有一個窗口過程與之對應(yīng),且Windows直接調(diào)用本函數(shù),因此,窗口函數(shù)必須采用FAR PASCAL調(diào)用約定。在我們的第二只小板凳中,我們的窗口函數(shù)為WndProc,必須注意這里的函數(shù)名必須是前面注冊的窗口類時。函數(shù)WndProc就是前面定義的窗口類所生成的所有窗口的窗口函數(shù)。在我們的這個窗口函數(shù)中,WndProc處理了共有兩條消息:WM_PAINT和WM_DESTROY.窗口函數(shù)從Windows中接收消息,這些消息或者是由WinMain函數(shù)發(fā)送的輸入消息,或者是直接來自Windows的窗口管理消息。窗口過程檢查一條消息,然后根據(jù)這些消息執(zhí)行特定的動作未被處理的消息通過DefWindowProc函數(shù)傳回給Windows作缺海上處理??梢园l(fā)送窗口函數(shù)的消息約有220種,所有窗口消息都以WM_開頭,這些消息在頭文件中被定義為常量。引起Windows調(diào)用窗口函數(shù)的原因有很多,如改變窗口大小啊,改變窗口在屏幕上的位置啊什么的。Windows已經(jīng)把任務(wù)扔給窗口過程了,窗口過程是怎么處理消息的呢?稍息一下,讓我們進行下一節(jié):處理消息......第三講:Windows消息機制(4)注:可能你看這些東西的時候有些亂,不過沒關(guān)系,這很正常,多看幾下MSDN就慢慢明白了,有我寫這個專題的時候,很多概念也太不清楚,不過等我查資料寫下來后,感覺漸漸有些東西也有了點眉目,因為這本身也是個進步的過程。 小朱 (七)處理消息 窗口過程處理消息通常以switch語句開始,對于它要處理的每一條消息ID都跟有一條case語句。大多數(shù)windows proc都有具有下面形式的內(nèi)部結(jié)構(gòu):switch(uMsgId){case WM_(something)://這里此消息的處理過程return 0。case WM_(something else)://這里是此消息的處理過程ruturn 0。default://其他消息由這個默認處理函數(shù)來處理return DefWindowProc(hwnd,uMsgId,wParam,lParam)。}在處理完消息后,要返回0,這很重要它會告訴Windows不必再重試了。對于那些在程序中不準備處理的消息,窗口過程會把它們都扔給DefWindowProc進行缺省處理,而且還要返回那個函數(shù)的返回值。在消息傳遞層次中,可以認為DefWindowProc函數(shù)是最頂層的函數(shù)。這個函數(shù)發(fā)出WM_SYSCOMMAND消息,由系統(tǒng)執(zhí)行Windows環(huán)境中多數(shù)窗口所公用的各種通用操作,例如,畫窗口的非用戶區(qū),更新窗口的正文標題等等等等。再提示一下,以WM_的消息在Windows頭文件中都被定義成了常量,如WM_QUIT=XXXXXXXXXXX,但我們沒有必要記住這個數(shù)值,也不可能記得住,我們只要知道WM_QUIT就OK了。在第二只小板凳中我們只讓窗口過程處理了兩個消息:一個是WM_PAINT,另一個是WM_DESTROY,先說說第一個消息WM_PAINT.關(guān)于WM_PAINT:無論何時Windows要求重畫當前窗口時,都會發(fā)該消息。也可以這樣說:無論何時窗口非法,都必須進行重畫。 哎呀,什么又是非法窗口?什么又是重畫啊?你這人有沒有完,嗯?稍安勿燥,我比你還煩呢?我午飯到現(xiàn)在還沒吃呢!你有點耐心,來點專業(yè)精神好不好???我開始在MSDN里面找有關(guān)這個方面的內(nèi)容了,別急,我找找看:Platform SDKGraphics and Multimedia ServicesWindows GDIPainting and DrawingUsing the WM_PAINT Message終于找到了。下面是一大套理論:讓我們把Windows的屏幕想像成一個桌面,把一個窗口想像成一張紙。當我們把一張紙放到桌面上時,它會蓋住其他的紙,這樣被蓋住的其他紙上的內(nèi)容都看不到了。但我們只要把這張紙移開,被蓋住的其他紙上的內(nèi)容就會顯示出來了這是一個很簡單的道理,誰都明白。對于我們的屏幕來說,當一個窗口被另一窗口蓋住時,被蓋住的窗口的某些部分就看不到了,我們要想看到被蓋住的窗口的全部面貌,就要把另一個窗口移開,但是當我們移開后,事情卻起了變化很可能這個被蓋住的窗口上的信息被擦除了或是丟失了。當窗口中的數(shù)據(jù)丟失或過期時,窗口就變成非法的了或者稱為無效。于是我們的任務(wù)就來了,我們必須考慮怎樣在窗口的信息丟失時重畫窗口使窗口恢復(fù)成以前的那個樣子。這也就是我們在這第二只小板凳中調(diào)用UpdateWindow的原因。你忘記了嗎?剛才我們在(三)顯示和更新窗口中有下面的一些文字:WinMain()調(diào)用完ShowWindow后,還需要調(diào)用函數(shù)UpdateWindow,最終把窗口顯示了出來。調(diào)用函數(shù)UpdateWindow將產(chǎn)生一個WM_PAINT消息,這個消息將使窗口重畫。為重新顯示非法區(qū)域,Windows就發(fā)送WM_PAINT消息實現(xiàn)。要求Windows發(fā)送WM_PAINT的情況有改變窗口大小,對話框關(guān)閉,使用了UpdateWindows和ScrollWindow函數(shù)等。這里注意,Windows并非是消息WM_PAINT的唯一來源,使用InvalidateRect或InvalidateRgn函數(shù)也可以產(chǎn)生繪圖窗口的WM_PAINT消息......通常情況下用BeginPaint()來響應(yīng)WM_PAINT消息。如果要在沒有WM_PAINT的情況下重畫窗口,必須使用GetDC函數(shù)得到顯示緩沖區(qū)的句柄。這里面不再擴展。詳細見MDSN。這個BeginPaint函數(shù)會執(zhí)行準備繪畫所需的所有步驟,包括返回你用于輸入的句柄。結(jié)束則是以EndPaint()。在調(diào)用完BeginPaint之后,WndProc接著調(diào)用GetClientRect:GetClientRect(hwnd,amp。rect)。第一個參數(shù)是程序窗口的句柄。第二個參數(shù)是一個指針,指向一個RECT類型的結(jié)構(gòu)。查MSDN,可看到這個結(jié)構(gòu)有四個成員。WndProc做了一件事,他把這個RECT結(jié)構(gòu)的指針傳送給了DrawText的第四個參數(shù)。函數(shù)DrawText的目的就是在窗口上顯示一行字你好,歡迎你來到VC之路!,有關(guān)這個函數(shù)的具體用法這里也沒必要說了吧。關(guān)于WM_DESTROY這個消息要比WM_PAINT消息容易處理得多:只要用戶關(guān)閉窗口,就會發(fā)送WM_DESTROY消息(在窗口從屏幕上移去后)。程序通過調(diào)用PostQuitMessage以標準方式響應(yīng)WM_DESTROY消息:PostQuitMessage (0) 。這個函數(shù)在程序的消息隊列中插入一個WM_QUIT消息。在(四)創(chuàng)建消息循環(huán)中我們曾有這么一段話:消息循環(huán)以GetMessage調(diào)用開始,它從消息隊列中取出一個消息:.......在接收到除WM_QUIT之外的任何一個消息后,GetMessage()都返回TRUE。如果GetMessage收到一個WM_QUIT消息,則返回FALSE,如收到其他消息,則返回TRUE。因此,在接收到WM_QUIT之前,帶有GetMessage()的消息循環(huán)可以一直循環(huán)下去。只有當收到的消息是WM_QUIT時,GetMessage才返回FALSE,結(jié)束消息循環(huán),從而終止應(yīng)用程序。至此,第二支小板凳終于支解完畢!!
點擊復(fù)制文檔內(nèi)容
物理相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1