Windows與Linux下僞光標的顯示實現

本文基於C語言實現。

                      Windows和Linux下僞光標移動的實現

        這是鄙人的第一篇博客,寫的不是很好,所以希望各位親們瀏覽時不要太苛刻,如果有什麼錯誤的話也希望各位能指出錯誤微笑

       好的,現在進入正題,爲什麼我會突然寫這篇關於Windows與Linux下僞光標移動的實現呢,這主要源於這幾次做課程設計需要用到僞光標,所以學習了下僞光標移動的實現,希望能幫助到遇到僞光標移動的實現困難的小夥伴。

       首先,爲什麼說是僞光標呢,請看下圖:

       這兩幅圖光標符號()的移動就屬於僞光標的移動。

       我是這樣認爲的,我們在C語言下做的“光標移動”只是刪了當前光標符號(上圖),重新移動到一個位置,在輸出光標符號的,也就是上圖僞光標移動的實現原理,但這不是不是真正意義的光標移動;真正意義上的光標移動應該是圖形位置的改變,直接將光標符號移過去。

       介紹完這個也就要真正開始講僞光標(以下用光標代替)的顯示實現了。

        Windows 下光標移動的實現

     

      這是 Windows下光標移動的展示,圖爲將光標移到(6,6)這個位置(在第6行第6列),然後輸出Hello Windows!,具體代碼實現爲

 

          CROOD就是這樣的一個玩意:

     typedef struct _COORD {
        SHORT X;
        SHORT Y;
    } COORD, *PCOORD

       這個結構就是記錄座標位置的,

       GetStdHandle()函數獲得標準輸入輸出的句柄,參數STD_OUTPUT_HANDLE是個宏,代表標準輸出,可以看作顯示器

       SetConsoleCursorPosition(hout,coord); 根據函數名稱:(Set)設置(Console)控制檯(Cursor)光標(Position)座標,也就是設置控制檯光標座標,參數就是設備句柄,座標,那麼把標準輸出的句柄傳給函數,就可以把光標定位在對應的位置了(左上角位置是0,0然後向左 向下延伸)

       Linux下的光標移動的實現

      


        這是 Linux下光標移動的展示,圖爲將光標移到(6,6)這個位置(在第6行第6列),然後輸出Hello Linux!,具體代碼實現爲

        initscr():初始化curses庫和ttty。(在開始curses編程之前,必須使用initscr()這個函數來開啓curses模式)

        move(y,x): 將光標移動至 x,y 的位置.。

        printw(format,str): 類似 printf() , 以一定的格式輸出。

        endwin():關閉curses並重置tty。(結束curses編程時,最後調用的一個函數)。

        當然在curses這個文件下還有其他函數可以控制輸出條件,有興趣的話可以百度一下。

        還有一點要注意的是,在編譯時應加上鍊接語句-lcurses。

        這就是我這次博客的全部內容了,希望這篇Windows和Linux下光標移動的實現文章可以對大家有所幫助!!!

                                                                                                    ——2015年5月9日

                                                                                                                    ——小智

 

 

 

       

 

發佈了20 篇原創文章 · 獲贊 6 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章