亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? 見招拆招《windows程序設計》(二) .txt

?? 會變語言實現的一些程序
?? TXT
?? 第 1 頁 / 共 5 頁
字號:
見招拆招《Windows程序設計》(二) 
    作者:Zoologist 于2007-10-15上傳   

--------------------------------------------------------------------------------

窗口和消息

    在前一章,程序使用函數MessageBox來向使用者輸出文字。MessageBox函數會建立一個「窗口」。在Windows中,「窗口」一詞有確切的含義。一個窗口就是屏幕上的一個矩形區域,它接收使用者的輸入并以文字或圖形的格式顯示輸出內容。
    MessageBox函數建立一個窗口,但這只是一個功能有限的特殊窗口。消息窗口有一個帶關閉按鈕的標題列、一個選項圖標、一行或多行文字,以及最多四個按鈕。當然,必須選擇Windows提供給您的圖標與按鈕。
    MessageBox函數非常有用,但下面不會過多地使用它。我們不能在消息框中顯示圖形,而且也不能在消息框中添加菜單。要添加這些對象,就需要建立自己的窗口,現在就開始。


自己的窗口
    
    建立窗口很簡單,只需調用CreateWindow函數即可。我們在MSDN上可以找到這個函數的原形:
    
    HWND CreateWindow(      
        LPCTSTR lpClassName,
        LPCTSTR lpWindowName,
        DWORD dwStyle,
        int x,
        int y,
        int nWidth,
        int nHeight,
        HWND hWndParent,
        HMENU hMenu,
        HINSTANCE hInstance,
        LPVOID lpParam
    );
    
    CreateWindow的第一個參數就是所謂的「窗口類別名稱」,并且該窗口類別連接所謂的「窗口消息處理程序」。在我們使用CreateWindow之前,有一點背景知識會對您大有幫助。


總體結構

    進行Windows程序設計,實際上是在進行一種對象導向的程序設計(OOP)。這點在Windows中使用得最多的對象上表現最為明顯。這種對象正是Windows之所以命名為「Windows」的原因,它具有人格化的特征,甚至可能會在您的夢中出現,這就是那個叫做「窗口」的東西。

    桌面上最明顯的窗口就是應用程序窗口。這些窗口含有顯示程序名稱的標題列、菜單甚至可能還有工具列和滾動條。另一類窗口是對話框,它可以有標題列也可以沒有標題列。

    裝飾對話框表面的還有各式各樣的按鍵、單選按鈕、復選框、清單方塊、滾動條和文字輸入區域。其中每一個小的視覺對象都是一個窗口。更確切地說,這些都稱為「子窗口」或「控件窗口」或「子窗口控件」。

    作為對象,使用者會在屏幕上看到這些窗口,并通過鍵盤和鼠標直接與它們進行交互操作。更有趣的是,程序寫作者的觀點與使用者的觀點極其類似。窗口以「消息」的形式接收窗口的輸入,窗口也用消息與其它窗口通訊。對消息的理解將是學習如何寫作Windows程序所必須越過的障礙之一。
    
    這有一個Windows的消息范例:我們知道,大多數的Windows程序都有大小合適的應用程序窗口。也就是說,您能夠通過鼠標拖動窗口的邊框來改變窗口的大小。通常,程序將通過改變窗口中的內容來響應這種大小的變化。您可能會猜測(并且您也是正確的),是Windows本身而不是應用程序在處理與使用者重新調整窗口大小相關的全部雜亂程序。由于應用程序能改變其顯示的樣子,所以它也「知道」窗口大小改變了。
    
    應用程序是如何知道使用者改變了窗口的大小的呢?由于程序寫作者習慣了往常的文字模式程序,操作系統沒有設置將此類消息通知給使用者的機制。問題的

    關鍵在于理解Windows所使用的架構。當使用者改變窗口的大小時,Window給程序發送一個消息指出新窗口的大小。然后程序就可以調整窗口中的內容,以響應大小的變化。
    
    「Windows給程序發送消息。」我們希望讀者不要對這句話視而不見。它到底表達了什么意思呢?我們在這里討論的是程序代碼,而不是一個電子郵件系統。操作系統怎么給程序發送消息呢?
    
    其實,所謂「Windows給程序發送消息」,是指Windows呼叫程序中的一個函數,該函數的參數描述了這個特定消息。這種位于Windows程序中的函數稱為「窗口消息處理程序」。
    
    無疑,讀者對程序呼叫操作系統的做法是很熟悉的。例如,程序在打開磁盤文件時就要使用有關的系統呼叫。讀者所不習慣的,可能是操作系統呼叫程序,而這正是Windows對象導向架構的基礎。
    
    程序建立的每一個窗口都有相關的窗口消息處理程序。這個窗口消息處理程序是一個函數,既可以在程序中,也可以在動態鏈接庫中。Windows通過呼叫窗口消息處理程序來給窗口發送消息。窗口消息處理程序根據此消息進行處理,然后將控制傳回給Windows。
    
    更確切地說,窗口通常是在「窗口類別」的基礎上建立的。窗口類別標識了處理窗口消息的窗口消息處理程序。使用窗口類別使多個窗口能夠屬于同一個窗口類別,并使用同一個窗口消息處理程序。例如,所有Windows程序中的所有按鈕均依據同一個窗口類別。這個窗口類別與一個處理所有按鈕消息的窗口消息處理程序(位于Windows的動態鏈接庫中)聯結。
    
    在對象導向的程序設計中,對象是程序與數據的組合。窗口是一種對象,其程序是窗口消息處理程序。數據是窗口消息處理程序保存的信息和Windows為每個窗口以及系統中那個窗口類別保存的信息。
    
    窗口消息處理程序處理給窗口發送消息。這些消息經常是告知窗口,使用者正使用鍵盤或者鼠標進行輸入。這正是按鍵窗口知道它被「按下」的奧妙所在。在窗口大小改變,或者窗口表面需要重畫時,由其它消息通知窗口。
    
    Windows程序開始執行后,Windows為該程序建立一個「消息隊列」。這個消息隊列用來存放該程序可能建立的各種不同窗口的消息。程序中有一小段程序代碼,叫做「消息循環」,用來從隊列中取出消息,并且將它們發送給相應的窗口消息處理程序。有些消息直接發送給窗口消息處理程序,不用放入消息隊列中。
    
    如果您對這段Windows架構過于簡略的描述將信將疑,就讓我們去看看在實際的程序中,窗口、窗口類別、窗口消息處理程序、消息隊列、消息循環和窗口消息是如何相互配合的。這或許會對您有些幫助。

    HELLOWIN程序
    
    建立一個窗口首先需要注冊一個窗口類別,那需要一個窗口消息處理程序來處理窗口消息。處理窗口消息對每個Windows程序都帶來了些負擔。程序3-1所示的HELLOWIN程序中整個做的事情差不多就是料理這些事情。
    
    程序3-1 HELLOWIN.ASM 
            
    ;MASMPlus 代碼模板 - 普通的 Windows 程序代碼
    .386
    .Model Flat, StdCall
    Option Casemap :None

    Include windows.inc
    Include user32.inc
    Include kernel32.inc
    Include gdi32.inc
    Include winmm.inc

    includelib gdi32.lib
    IncludeLib user32.lib
    IncludeLib kernel32.lib
    IncludeLib winmm.lib
    include macro.asm
        
        WinMain PROTO :DWORD,:DWORD,:DWORD,:DWORD
        WndProc PROTO :DWORD,:DWORD,:DWORD,:DWORD
        
    .DATA
        szAppName   db "HelloWin",0
        
    .DATA?
        hInstance   dd ?
        
    .CODE
    START:   ;從這里開始執行

        invoke GetModuleHandle,NULL
        mov hInstance,eax
        invoke WinMain,hInstance,NULL,NULL,SW_SHOWDEFAULT
        invoke ExitProcess,0

    WinMain proc hInst:DWORD,hPrevInst:DWORD,CmdLine:DWORD,CmdShow:DWORD
        LOCAL wndclass :WNDCLASSEX
        LOCAL msg       :MSG
        local hWnd      :HWND
        mov wndclass.cbSize,sizeof WNDCLASSEX   
        mov wndclass.style,CS_HREDRAW or CS_VREDRAW 
        mov wndclass.lpfnWndProc,offset WndProc

        mov wndclass.cbClsExtra,0
        mov wndclass.cbWndExtra,0
        
        push hInst
        pop wndclass.hInstance
        
        invoke LoadIcon,NULL,IDI_APPLICATION
        mov wndclass.hIcon,eax  
        
        invoke LoadCursor,NULL,IDC_ARROW
        mov wndclass.hCursor,eax    
        
        invoke GetStockObject,WHITE_BRUSH
        mov wndclass.hbrBackground,EAX
        
        mov wndclass.lpszMenuName,NULL
        mov wndclass.lpszClassName,offset szAppName

        mov wndclass.hIconSm,0
        
        invoke RegisterClassEx, ADDR wndclass
        .if (EAX==0)
             invoke MessageBox,NULL,CTXT("This program requires Windows NT!"),addr szAppName,MB_ICONERROR       
             ret
        .endif
            
        invoke CreateWindowEx,
                        NULL,
                ADDR szAppName,                         ;window class name
                CTXT("http://www.aogosoft.com"), ;window caption
                WS_OVERLAPPEDWINDOW,                    ;window style
                200,                                        ;initial x position
                200,                                        ;initial y position
                400,                                        ;initial x size
                200,                                        ;initial y size
                NULL,                                   ;parent window handle
                NULL,                                       ;window menu handle
                hInst,                              ;program instance handle
                NULL                                ;creation parameters
        mov hWnd,eax
        
        invoke ShowWindow,hWnd,SW_SHOWNORMAL
        invoke UpdateWindow,hWnd
        
        StartLoop:
            invoke GetMessage,ADDR msg,NULL,0,0
                cmp eax, 0
                je ExitLoop
                    invoke TranslateMessage, ADDR msg
                    invoke DispatchMessage,  ADDR msg
                jmp StartLoop
        ExitLoop:
        
    mov eax,msg.wParam
    ret
    WinMain endp

    WndProc proc hWin:DWORD,uMsg:DWORD,wParam :DWORD,lParam :DWORD

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91色在线porny| 亚洲无线码一区二区三区| 欧美三级在线播放| 欧美日韩视频在线观看一区二区三区 | 国内精品久久久久影院色| 亚洲成av人片在www色猫咪| 午夜亚洲福利老司机| 久久精品国产第一区二区三区| 久久爱另类一区二区小说| 国产伦精一区二区三区| 91丨porny丨蝌蚪视频| 欧美男男青年gay1069videost| 91精品欧美久久久久久动漫| 欧美经典一区二区| 一区二区三区视频在线观看| 日韩在线播放一区二区| 成人中文字幕电影| 精品免费日韩av| 性感美女久久精品| 91在线观看污| 久久久三级国产网站| 亚洲777理论| 91国偷自产一区二区开放时间 | 欧美日韩精品高清| 亚洲精品一二三| 色综合久久中文字幕| 国产精品久久久久久一区二区三区 | 欧美国产精品v| 狠狠网亚洲精品| 国产日韩欧美高清在线| 国产一区二区导航在线播放| 26uuu久久综合| 丁香婷婷综合激情五月色| 精品成人佐山爱一区二区| 久久99久久精品| 一区二区在线看| 中文字幕一区日韩精品欧美| 欧美三级日韩在线| 日韩一区欧美一区| 欧美日韩高清一区二区不卡 | 99在线视频精品| 亚洲免费av高清| 884aa四虎影成人精品一区| 日本不卡一区二区三区高清视频| 51精品视频一区二区三区| 国产一区二区三区四| 一区二区三区欧美激情| 精品国内二区三区| 色综合夜色一区| 国产在线视视频有精品| 日本一区二区成人在线| 3d成人动漫网站| 91一区二区在线| 国模无码大尺度一区二区三区| 国产精品乱码人人做人人爱| 欧美男人的天堂一二区| 不卡一卡二卡三乱码免费网站| 三级欧美在线一区| 一区二区三区产品免费精品久久75| 日韩欧美中文字幕公布| 欧美亚洲免费在线一区| 成人美女视频在线看| 日韩有码一区二区三区| 丝袜亚洲精品中文字幕一区| 成人欧美一区二区三区| 欧美极品少妇xxxxⅹ高跟鞋 | 高清视频一区二区| 国内精品嫩模私拍在线| 日本一不卡视频| 蜜桃精品视频在线| 久久精品99国产国产精| 日韩av在线播放中文字幕| 亚洲一区成人在线| 日韩国产高清在线| 国产精品一二三| 99久久婷婷国产| 欧美三级电影精品| 久久日韩粉嫩一区二区三区| 欧美高清一级片在线观看| 亚洲嫩草精品久久| 欧美aaaaa成人免费观看视频| 免费精品视频最新在线| 国产91富婆露脸刺激对白| 在线视频你懂得一区二区三区| 欧美日韩成人高清| 亚洲精品在线免费播放| 亚洲一区在线电影| 国产成人免费高清| 欧美人妇做爰xxxⅹ性高电影| 日韩免费电影网站| 午夜精品久久久久久不卡8050| 国产综合成人久久大片91| 欧美优质美女网站| 亚洲视频中文字幕| 国产69精品一区二区亚洲孕妇| 在线综合亚洲欧美在线视频| 亚洲另类色综合网站| 成人福利视频网站| 26uuu精品一区二区| 久色婷婷小香蕉久久| 在线视频一区二区三| 国产精品久久久久一区 | 性做久久久久久久久| 97久久精品人人澡人人爽| 欧美一区二区不卡视频| 亚洲国产美女搞黄色| 91网页版在线| 亚洲视频一区二区在线观看| 国产91精品在线观看| 欧美激情中文字幕一区二区| 国产成人av一区二区三区在线| 欧美成人性战久久| 国产成人av自拍| 亚洲桃色在线一区| 欧美日韩一区高清| 久久爱www久久做| 国产精品久久久久aaaa樱花 | 懂色一区二区三区免费观看| 国产精品免费看片| 色先锋aa成人| 免费观看成人av| 亚洲精品国久久99热| 欧美一级高清大全免费观看| 成年人国产精品| 麻豆91在线观看| 玉米视频成人免费看| 欧美电影在哪看比较好| 99久久精品免费看国产免费软件| 亚洲香肠在线观看| 国产精品成人在线观看| 日韩欧美中文一区二区| 在线观看国产一区二区| 国产精品一二二区| 国内精品视频666| 美女免费视频一区二区| 亚洲福利视频一区| 亚洲综合丝袜美腿| 亚洲男同性视频| 一区二区三区国产精华| 亚洲欧洲成人精品av97| 国产精品国产三级国产aⅴ无密码 国产精品国产三级国产aⅴ原创 | 成人性生交大片免费看视频在线 | 污片在线观看一区二区| 国产精品传媒在线| 亚洲欧美日韩一区二区| 欧美一级精品在线| 欧美在线免费观看亚洲| 欧美亚洲综合色| 欧美日韩亚洲综合在线 | 波多野结衣中文字幕一区二区三区 | 日韩欧美在线网站| 久久精品人人爽人人爽| 国产精品区一区二区三区| 国产精品免费网站在线观看| 国产精品情趣视频| 亚洲第一在线综合网站| 激情五月激情综合网| 国产成人精品一区二区三区四区| 成人av免费在线| 3d动漫精品啪啪1区2区免费| 精品国产一区a| 一区二区三区免费网站| 免费精品视频最新在线| 97精品国产露脸对白| 91精品国产色综合久久ai换脸| 亚洲精品一区二区精华| 亚洲男人都懂的| 国产二区国产一区在线观看| 日本韩国欧美在线| 国产日韩精品一区二区三区| 天堂精品中文字幕在线| 成人午夜av电影| 久久蜜桃一区二区| 强制捆绑调教一区二区| 欧美群妇大交群中文字幕| 亚洲视频一区在线观看| www.欧美日韩| 成人免费视频在线观看| 国产99一区视频免费| 国产午夜精品久久久久久久| 老司机精品视频在线| 91精品国产品国语在线不卡| 中文字幕一区免费在线观看| 狠狠色综合日日| 久久欧美中文字幕| 狠狠久久亚洲欧美| 国产精品午夜在线观看| 成人激情午夜影院| 一区二区三区国产| 欧美一级精品大片| 国产一区二区三区最好精华液| 久久久精品国产免大香伊| 国产高清不卡一区| 又紧又大又爽精品一区二区| 日本道色综合久久| 麻豆国产精品一区二区三区 | 欧美日韩色一区| 久久国内精品视频| 综合自拍亚洲综合图不卡区| 欧美日韩国产一二三|