<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                ###指針   我們知道,程序的運行是存在內存中的,因此,我們在代碼中聲明的所有變量都是存放在內存中的某塊區域中,所以,在C語言中,指針用來告訴我們,某個變量在內存中的首地址在哪。注意,是首地址,因為變量的長度不一定就是一個字節,有可能N多個字節,它在內存中是排列在一段連續的區域塊中。      **通過指針中存放的首地址,應用程序順利地找到某個變量**。就好像我最近認識了一位朋友,他叫我有空去他家坐坐,然后,他留下了地址。某個周末我正閑著,忽然想起這位朋友,于是,我就根據他留的地址去找他,結果,當我來到傻B街230號出租房時,里面走出一個我不認識的人,于是,我問他我這位朋友去哪了,陌生人說,我剛租了這房子,你找的可能是前一位租戶吧。   所以,指針所指向的地址,有可能是變量B,也有可能是變量F,或者變量S,指針是房東,可以把房子租給B,C,或F,它可以動態為變量分配內存,也可以把變量銷毀(delete),交不起房租就滾蛋(析構函數)。   從上面的故事中,我們看到指針的兩個用途:**索引內存和分配內存**。此外指針還有一個功能功能:**創建數組**。      我們怎么知道哪些參數是指針類型呢,技巧還是在命名上,以后,只要我們看到lp開頭的,都是指針類型。比如lpszClassName、lpszObjTitle等等。 ~~~ .版本 2 .DLL命令 Ex_ObjCreate, 整數型, "libexdui.dll", "Ex_ObjCreate", 公開, 創建組件. .參數 lpszClassName, 整數型, , 組件類名 .參數 lpszObjTitle, 整數型, , 組件標題 .參數 dwStyle, 整數型, , 組件風格 .參數 x, 整數型, , 左邊 .參數 y, 整數型, , 頂邊 .參數 width, 整數型, , 寬度 .參數 height, 整數型, , 高度 .參數 hParent, 整數型, , 父組件句柄 .參數 lParam, 整數型, , 參數 ~~~ ###創建窗口   窗口類注冊完成后,就應該創建窗口,然后顯示窗口,調用Ex_WndCreate創建窗口,如果成功,會返回一個窗口的句柄,我們對這個窗口的操作都要用到這個句柄。   什么是句柄呢?其實它就是一串數字,只是一個標識而已,內存中會存在各種資源,如圖標、文本等,為了可以有效標識這些資源,每一個資源都有其唯一的標識符,這樣,通過查找標識符,就可以知道某個資源存在于內存中哪一塊地址中,就好比你出身的時候,長輩都要為你取個名字,你說名字用來干嗎?名字就是用來標識你的,不然,你見到A叫小明,遇到B又叫小明,那誰知道哪個才是小明啊?就好像你上大學去報到號,會為你分配一個可以在本校學生中唯一標識你的學號,所有學生的學號都是不同的,這樣,只要通過索引學號,就可以找到你的資料。 ~~~ .版本 2 .DLL命令 Ex_WndCreate, 整數型, "libexdui.dll", "Ex_WndCreate", 公開, .參數 hWndParent, 整數型, , .參數 lpwzClassName, 整數型, , .參數 lpwzWindowName, 整數型, , .參數 x, 整數型, , .參數 y, 整數型, , .參數 Width, 整數型, , .參數 Height, 整數型, , .參數 dwStyle, 整數型, , .參數 dwStyleEx, 整數型, , ~~~ ###消息循環   Windows操作系統是基于消息控制機制的,用戶與系統之間的交互,程序與系統之間的交互,都是通過發送和接收消息來完成的。就好像軍隊一樣,命令一旦傳達,就要執行,當然,我們的應用程序和軍隊不一樣,我們收到指令不一定要執行,我們是可以選擇性地執行。   這樣消息循環就出現了,只要有與用戶交互,系統人不斷地向應用程序發送消息通知,因為這些消息是不定時不斷發送的,必須有一個綬沖區來存放,就好像你去銀行辦理手續要排隊一樣,我們從最前端取出一條一條消息處理,后面新發送的消息會一直在排隊,直到把所有消息處理完,這就是**消息隊列**。    ~~~ .版本 2 .DLL命令 Ex_WndMsgLoop, 整數型, "libexdui.dll", "Ex_WndMsgLoop", 公開, ~~~ ###程序退出   通常情況下,當我們的主窗口關閉后,應用程序應該退出(木馬程序除外),但是,我們剛才運行后發現,為什么我的窗口關了,但程序不退出呢?   要退出程序,就要先跳出消息循環,和關閉哪個窗口無關。因此,我們要解決兩個問題:   1、如何跳出消息循環;   2、什么時候退出程序。   其實兩個問題是可以合并到一起解決。   首先要知道,當窗口被關閉,為窗口所分配的內存會被銷毀,同時,我們會收到一條WM_DESTROY消息,因而,我們只要在收到這條消息時調用PostQuitMessage函數,這個函數提交一條WM_QUIT消息,而在消息循環中,WM_QUIT消息使GetMessage函數返回0,這樣一來,GetMessage返回FALSE,就可以跳出消息循環了,這樣應用程序就可以退出了。   所以,我們要做的就是捕捉WM_DESTROY消息,然后PostQuitMessage。   ![](https://box.kancloud.cn/2016-08-18_57b5723f7bcb8.png) ###繪圖   要進行繪制,首先要得到一個DC,啥是DC呢?按字面翻譯叫設備上下文,也可以翻譯為設備描述表,它主要指API為我們封裝了一些與顯示設備相關的交互操作,我們這里說的是圖形的繪制,自然指的是顯卡。      在許多情況下,我們繪圖都是遵循先GetDC-----〉繪圖------〉ReleaseDC,DC是一種資源,用完了要釋放,我們到圖書館借書,看完了要還書。不過,在處理WM_PAINT消息時,聲明一個ExsPaintStruct結構體的變量,然后傳給_canvas_beginpaint函數,之后就可以畫東西了。調用DLL命令名 _canvas_beginpaint 函數后,開始繪圖,畫完了調用_canvas_endpaint。其中 _canvas_beginpaint 函數會自動調用GetDC,_canvas_endpaint自動調用ReleaseDC。 ~~~   .版本 2 .DLL命令 _canvas_beginpaint, 整數型, "libexdui.dll", "_canvas_beginpaint", 公開, .參數 hcanvas, 整數型, , ~~~ [資料來源>](http://www.hmoore.net/digest/win32-dev/165890)
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看