• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            Dict.CN 在線詞典, 英語學習, 在線翻譯

            學海苦作舟,書山勤為徑

            留下點回憶

            常用鏈接

            統計

            積分與排名

            Denoise

            English study

            Web技術

            數據壓縮

            一些連接

            最新評論

            認識控制臺-什么是控制臺?

            控制臺管理字符模式程序的輸入和輸出(程序不需要提供他們自己的圖形用戶界面)。

            控制臺函數使訪問不同級別的控制臺成為可能。高級控制臺 I/O 函數使程序可以從標準輸入來重新得到存儲在控制臺輸入緩沖區中的鍵盤輸入;這些函數也能夠是程序可以向標準輸出寫或將錯誤顯示在標準的控制臺緩沖區中。高級別的控制臺函數也支持重定向標準的句柄和不同 I/O 功能的控制臺模式。低級別的 I/O 函數能夠使程序接收詳細的鍵盤輸入和鼠標事件,以及控制臺窗口和用戶交互的事件。低級函數也是輸出到屏幕較大的控制。
            控制臺對簡單字符模式程序提供高級的支持,其通過讀寫標準輸入和輸出以及標準錯誤函數來和用戶交互。控制臺也提供復雜低級支持,例如:直接訪問控制臺屏幕緩沖區以及接收額外輸入信息(例如鼠標輸入)。

            什么是控制臺?

            控制臺是一個用來提供字符模式 I/O 的接口。這種處理器獨立的機制使導入一個存在的字符模式程序或創建一個新的字符模式工具和程序變的容易。

            控制由輸入緩沖區和一到多哥屏幕緩沖區組成。輸入緩沖區包含一個輸入記錄的序列,序列中是輸入事件的信息。輸入隊列也包含鍵按下和松開鍵事件。它也能包括鼠標事件(指針移動和鼠標鍵按下或釋放)以及用來影響活動屏幕區域大小的用戶動作。屏幕緩沖區是一個控制臺窗口的二維的字符數組和彩色數據。所有的處理能共享一個控制臺。

            系統在啟動一個控制臺程序的時候創建一個控制臺,控制臺程序是一個字符模式的程序,入口是 main 函數。例如,系統在其他命令處理器是會創建一個新的控制臺。當命令處理器開始一個新的控制臺程序時,用戶能指定系統是否為新的程序創建一個新的控制臺還是從命令處理器控制臺繼承。

            一個程序可以使用下面的方法來創建一個控制臺:

            1.? GUI 或控制臺程序可以使用 CreateProcess 函數并帶有 CREATE_NEW_CONSOLE 來創建一個帶有新控制臺的控制臺程序。(默認的,控制臺程序從它的父控制臺中繼承并且不能保證輸出可以被程序接收)

            2.? GUI 或控制臺進程沒有附著到一個控制臺上的,可以使用 AllocConsole 函數來創建一個新的控制臺( GUI 程序在創建的時候不附著到控制臺上,控制臺進程在使用 DETACHED_PROCESS 標志的 CreateProcess 函數創建的時候也不附著到控制臺上。

            典型的情況,一個程序在錯誤發生并請求用戶交互的時候使用 AllocConsole 來創建一個控制臺。例如,一個 GUI 程序在阻止使用正常圖形接口程序錯誤發生的時候能創建一個控制臺,或一個控制臺進程沒有正常地和用戶交互可以創建一個控制臺來顯示錯誤。

            進程可以在調用 CreateProcess 的時候指定 CREATE_NEW_COSOLE 標志來創建一個控制臺。這個方法創建一個控制對子進程可訪問,而對父進程不可訪問。獨立的控制臺對于是父子進程與用戶不沖突的交互成為可能。如果這個標志在一個控制臺進程創建的時候沒有指定,兩個進程都附著到相同的控制臺上,并且不能保證正確的進程能接收到提供給他的輸入。程序可以在創建子進程的時候不繼承輸入緩沖區的句柄來避免這種迷惑的情況,或者同時只有一個子進程繼承輸入緩沖區句柄來組織父親進程在子進程沒有完成的時候讀控制臺輸入。

            創建一個新的控制臺結果是一個新的控制臺窗口,同時也包括獨立的屏幕緩沖區。和新控制臺關聯的進程可以使用 GetStdHandle 函數來得到新的控制臺輸入和屏幕緩沖區的句柄。這些句柄使進程可以訪問控制臺。

            當一個進程使用 CreateProcess ,它可以指定一個 STARTUPINFO 結構,該結構的成員控制為子進程創建的第一個新控制臺的特性。如果 CREATE_NEW_CONSOLE 標志被指定, STARTUPINFO 結構在調用 CreateProcess 時候影響一個控制臺的創建;它也影響子進程后來使用 AllocConsole 來創建控制臺。下面的控制臺特性可以指定:

            1.? 新控制臺窗口的大小,字符單元

            2.? 新控制臺窗口的位置,屏幕像素坐標

            3.? 新控制臺屏幕緩沖區的文本和背景顏色屬性

            4.? 新控制臺窗口的 TITLE BAR 上的顯示名字

            如果 STARTUPINFO 值沒有指定,系統使用默認的值。子進程可以使用 GetStartupInfo 函數來判斷 STARTUPINFO 結構中的值。

            進程不能改變控制臺窗口在屏幕上的位置,但下面的控制臺函數可以用來設置和獲得 STARTUPINFO 結構的其他屬性。

            函數

            描述

            GetConsoleScreenBufferInfo

            返回窗口大小、屏幕緩沖區大小和顏色屬性

            SetConsoleWindowInfo

            改變控制臺窗口的大小

            SetConsoleScreenBufferSize

            該表控制臺屏幕緩沖區的大小

            SetConsoleTextAttribute

            設置顏色屬性

            SetConsoleTitle

            設置控制臺窗口的標題

            GetConsoleTitle

            獲得控制窗口的標題

            進程可以使用 FreeConsole 函數來分離繼承的控制臺或通過 AllocConsole 創建的控制臺。

            posted on 2006-04-24 23:12 笨笨 閱讀(1365) 評論(0)  編輯 收藏 引用

            日韩AV毛片精品久久久| 精品久久久中文字幕人妻 | 99久久精品午夜一区二区| 国产69精品久久久久观看软件| 色综合合久久天天综合绕视看| 久久综合精品国产二区无码| 精品久久久久久无码不卡| 亚洲伊人久久成综合人影院| 久久天天日天天操综合伊人av| 久久精品无码一区二区app| 老司机国内精品久久久久| 99精品国产在热久久无毒不卡 | 中文字幕亚洲综合久久菠萝蜜| 日日狠狠久久偷偷色综合96蜜桃| 国产午夜福利精品久久| 精品水蜜桃久久久久久久| 久久久99精品成人片中文字幕| 日本久久久久久久久久| 亚洲人成电影网站久久| 日本WV一本一道久久香蕉| 久久精品国产99国产精品导航| 无码国内精品久久综合88| 日韩人妻无码精品久久久不卡 | 色婷婷久久久SWAG精品| 亚洲精品国产第一综合99久久| 久久综合伊人77777| 久久婷婷五月综合色奶水99啪 | 久久精品人人做人人爽97| 国内精品久久久久久99| 国产精品美女久久久| 精品久久久久久国产牛牛app| 久久久久人妻精品一区三寸蜜桃| 一本久久综合亚洲鲁鲁五月天| 一本色综合网久久| 国产精品久久影院| 日韩久久久久中文字幕人妻| 精品国产青草久久久久福利| 日本精品久久久中文字幕| 久久久黄色大片| 美女写真久久影院| 久久精品国产AV一区二区三区|