操屁眼的视频在线免费看,日本在线综合一区二区,久久在线观看免费视频,欧美日韩精品久久综

新聞資訊

    寫在前面

    在上一篇文章中,詳細的介紹了通過格式字符串對文字進行各種設置(原文鏈接:輕松玩轉windows控制臺( 三):魔改文字和玩轉光標),比如給文字加上下劃線、高亮顯示文字等等,又著重介紹了如何靈活控制當前光標的位置,可以定位在控制臺屏幕的任意位置,可以前進、后退、上下左右四個方向任意移動等的功能。

    為后期的控制臺游戲開發提供了一些準備知識,突破了我們對控制臺一成不變黑窗口的印象,原來隨著我們技能的提升,控制臺是可以被我們隨心所欲玩轉的。

    控制臺就像一個盲盒,每次調試控制臺程序時,它的大小和位置都是未知的,今天,我們就來學習一下,如何設置控制臺窗口的大小。

    控制臺窗口的2個大小

    我們通常所說的控制臺窗口的大小,其實指的是控制臺程序的顯示面積占據整個屏幕的區域,我們把這個大小,稱為控制臺的“顯示區域”,或可見區域、可視區域都可以。如圖:

    我的桌面是黑色的,和控制臺的背景很相似,但是仔細看,還是能看到邊框痕跡的。紅框內的控制臺窗口的大小,稱為控制臺的“顯示區域”(可見區域)。

    控制臺窗口內輸入輸出數據,以及鼠標、鍵盤等設備的響應事件、以及操作的歷史記錄等等,都被存儲在控制臺的“屏幕緩沖區”(Screen Buffer),屏幕緩存區也是有大小的,這個大小指的是能存儲的數據的多少。這樣說實際上是不準確的,但是為了降低學習的復雜度,這樣處理是最合適的,否則按下面的講法:

    每個控制臺都有一個包含輸入事件記錄隊列的輸入緩沖區。當控制臺的窗口獲得鍵盤焦點時,控制臺會將每個輸入事件(例如單次擊鍵、鼠標移動或鼠標按鈕單擊)設置為它放置在控制臺輸入緩沖區中的輸入記錄。

    這種描述雖然嚴謹,但是牽涉到了鼠標時間、鍵盤事件、緩沖區的數據結構等等,會讓我們的學習曲線在開始的時候就會變得陡峭,基本上就變成了從入門到放棄。在前期是不需要深入學習的,后期會在我的實戰課中逐漸學習到的。

    窗口的顯示區域指的是當前控制臺窗口的外觀大小,屏幕緩沖區指的是當前控制臺窗口的數據存儲的容量的大小,我們先來講解下窗口顯示區域如何設置大小。

    設置窗口可見區域的大小

    控制臺窗口尺寸的設置,有很多種方法,本文先介紹兩種最簡單移動的方法。一個是通過DOS命令mode來進行設置,另一個是通過windows的控制臺函數來進行設置。

    我們先介紹第一種。DOS命令中有一個mode命令,mode是“模式”的意思,可以設置控制臺的模式,也可以設置打印機的模式,等等。

    控制臺在DOS命令一般稱為“con”,是console的簡寫。設置控制臺的窗口大小,實際上就是設置它在屏幕上的顯示區域,有多少行多少列可見。

    比如說我們設置了展示出20行,但是如果我們輸入和輸出的內容超過了20行,那么除非移動滾動條,否則是看不到的。舉個例子:

    我們打開了一個控制臺窗口,如果屏幕輸入和顯示的內容超過了屏幕的顯示區域,就會自動出現滾動條,如下圖所示:

    我們輸入了一個dir命令,顯示的內容的行數已經超過了窗口顯示區域的行數,所以可見區域以外的部分,就需要通過滾動條上下滾動來顯示被遮蔽的內容,無論如何滾動,控制臺窗口的可見區域大小都不會被改變的。

    可見區域的行數和列數就是窗口的尺寸。通過剛才介紹的mode命令,就可以進行設置。命令如下:

    mode con lines = 40 cols = 20

    mode con 是設置console(控制臺)的mode(模式)的意思。lines 是行,col是colum的簡寫,后面加s是因為復數。

    下面是一段演示如何通過程序來利用mode命令設置控制臺窗口尺寸的代碼:

    #include <stdio.h>
    #include <stdlib.h>
    int main() {
        int lines = 20,cols = 30;
        char console_size[50];
        sprintf(console_size,"mode con lines=%d cols=%d",lines,cols);
        system(console_size);
        printf("input lines: ");
        scanf("%d",&lines);
        printf("input cols: ");
        scanf("%d",&cols);
        sprintf(console_size,"mode con lines=%d cols=%d",lines,cols);
        system(console_size);
        printf("new lines = %d\nnew cols = %d\n",lines,cols);
        system("pause");
        return 0;
    }

    程序啟動時的默認控制臺窗口尺寸為20行30列,可以隨時改變窗口尺寸。注意,lines=30,和cols=20,中間不能有空格,否則命令不起作用。之所以用sprintf函數,是為了能靈活接收變量的值。程序剛開始運行窗口尺寸如下:

    輸入行數15,列數30保持不變,窗口尺寸效果如下:

    除了通過system函數執行DOS命令的方式以外,我們一般更常用的辦法,是通過windows提供的控制臺函數來設置控制臺窗口尺寸。函數原型如下:

    BOOL SetConsoleWindowInfo(
      HANDLE hConsoleOutput,
      BOOL bAbsolute,
      const SMALL_RECT *lpConsoleWindow);
    
    typedef struct _SMALL_RECT {
    SHORT Left;
    SHORT Top;
    SHORT Right;
    SHORT Bottom;
    } SMALL_RECT;

    第一個是要用到的控制臺函數的原型定義,第二個是函數最后一個參數要用到的結構體類型的定義。我們來詳細解釋下這兩者。

    SetConsoleWindowInfo,見名知義,設置控制臺窗口信息,這個函數的作用局勢用來設置控制臺的顯示區域的尺寸大小的(和之前的DOS命令一樣,不是設置屏幕緩沖區大小,都只是設置控制臺窗口顯示區域的大小,屏幕緩沖區大小后文會介紹)。

    函數執行成功,會返回TRUE,失敗返回FALSE。第一個參數需要傳入某個控制臺的句柄值 ,句柄的用法我們在之前的系列文章里已經介紹過了,這里不再贅述,一般都是通過GetStdHandle函數獲取到當前控制臺窗口的句柄值,然后傳入即可。

    第二個參數是狀態開關,如果FALSE,則我們傳入的窗口尺寸是相對值,如果是TRUE,則傳入的窗口尺寸是絕對值。相對值是指相對于當前控制臺窗口尺寸的偏移量。絕對值,是指重新指定一組新的窗口尺寸,下面的演示代碼就是使用的是絕對值用法。

    最后一個參數,是一個SMALL_RECT結構體。如果狀態開關是TRUE的話,這個結構體存放的是新的窗口的尺寸大小。因為后面控制臺系列文章中,要經常用到。下面就詳細介紹下。

    RECT是rectangle的簡稱,矩形的含義。每一個窗體都是一個矩形的結構。船體一般有4個頂點共同構成一塊矩形區域,但是如果指定了左上頂點和右下頂點的位置,那么這個矩形實際上也就被唯一確定了

    左上頂點一般由x坐標和y坐標組成。之前文章已經說過,整個屏幕的坐標軸,包括GUI圖形的坐標軸,都是把左上頂點作為原點,往下是y軸,往右是x軸。

    因此我們控制臺窗口也是這樣。左上角是坐標軸原點,y軸一般稱為Top(top),x軸一般稱為Left(left)。因為是原點,所以Top和Left一般默認為:Top = 0,left= 0。以此類推,右下角坐標的x軸我們一般稱為Right(right),y軸稱為Bottom(bottom)。

    實際上bottom就是行數,right就是列數(每一行的可見字符個數)。

    small是指這個矩形的4個成員變量的數據類型都是short類型。small表示小,shaort表示短整型。

    我們假設控制臺的顯示區域(可見區域)是15行40列(每行可見40個字符),給出演示代碼如下:

    #include <windows.h>
    int main() {
        HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
        SMALL_RECT newWindowSize = {0, 0, 39, 14}; // 設置新的窗口尺寸,寬度為40字符,高度為15行
        SetConsoleWindowInfo(hConsole, TRUE, &newWindowSize);
        system("pause");
        return 0;
    }

    首先通過GetStdHandle獲取標準設備的句柄,參數指定了要獲取句柄的標準設備的類型是什么,本例是控制臺,STD_OUTPUT_HANDLE,指的就是控制臺對象的句柄。

    然后定義一個區域的大小,作為新的控制臺窗口的尺寸。從0開始,直到39,一共右40個字符,從0到14,一共15行。狀態標志一定要是TRUE,表示是通過絕對值來設置新的窗口尺寸。

    程序運行效果如圖所示:

    總 結

    本文主要講解了控制臺窗口的大小不僅僅是屏幕上看見的“顯示區域”(可見區域),還包括窗口輸入輸出的數據的存儲大小。

    并且通過代碼詳細演示了如何設置控制臺窗口的顯示區域(可見區域)的尺寸,并且給出了2個實現的方法,特別提醒的是,這2個方法只是講解了控制臺顯示區域的大小設置,他們的屏幕緩沖區的大小都是操作系統設置的默認值。

    下一篇將詳細講解控制臺屏幕緩沖區的設置(ScreenBufferSize),包括獲取當前控制臺窗口的默認緩沖區的大小,以及如何設置成新的大小等實際操作。

    段譽,24年2月12日(年初三),寫于合肥。


    在Windows 10中,我們可以通過一條命令來設置電腦的IP地址,不用再用鼠標點來點去。

    通過netsh命令來實現直接修改IP地址,如DHCP自動獲取或靜態IP設置。

    實戰開始......

    1. 同時按住鍵盤上"win"的和字母"R",打開電腦的“運行”窗口。

    在這里面輸入“cmd”,然后點擊確定,打開命令提示符窗口。

    我們就可以在這里輸入命令了。

    1. 第一條命令ipconfig/all,用來查看當前的網絡配置情況。

    輸入完成按鍵盤上的回車,就會顯示當前的網絡配置情況。

    紅色方框中的名字就是我們的網卡名稱,在這里我們可以看到DHCP是否啟用,ipv4地址,子網掩碼,網關還有DNS服務器。我們現在重點關注網卡名稱“以太網”,這個名字和我們在網絡適配器中看到的是一致的。

    1. 一條命令修改網卡靜態IP地址。
    netsh interface ipv4 set address name="以太網" static 192.168.1.100 255.255.255.0 192.168.1.1

    設置完成后我們可以通過ipconfig/all命令來查看一下是否生效。

    我們看到IP地址已經修改成我們想要的IP了。

    1. 一條命令設置DNS服務器
    netsh interface ip set dns name="以太網" static 8.8.8.8

    我們先來看一下現在的DNS服務器地址,還是通過ipconfig/all命令。

    現在的DNS服務器IP是223.5.5.5。下面我們執行一下上面的命令在看一下,DNS地址已經修改成8.8.8.8了。

    1. 修改電腦自動獲取(DHCP)IP地址。
    netsh interface ip set address name="以太網" source=dhcp

    總結:一條簡單的命令就可以修改IP地址,是不是很方便,快來學習起來吧。

網站首頁   |    關于我們   |    公司新聞   |    產品方案   |    用戶案例   |    售后服務   |    合作伙伴   |    人才招聘   |   

友情鏈接: 餐飲加盟

地址:北京市海淀區    電話:010-     郵箱:@126.com

備案號:冀ICP備2024067069號-3 北京科技有限公司版權所有