windows API之控制檯介面
關於Console的API不是很多,主要包括,獲取控制檯控制代碼,控制檯輸入輸出,控制檯樣式設定。下面逐一介紹: 1) HANDLE WINAPI GetStdHandle(_in_ DWORD nStdHandle); 根據引數獲取控制代碼。標準輸入控制代碼為STD_INPUT_HANDLE,標準輸出控制代碼為STD_OUTPUT_HANDLE,或者設定為錯誤控制代碼STD_ERROR_HANDLE。 2)
#include <stdio.h>
#include <Windows.h>
int main(int argc, char** argv){
HANDLE hStdout = GetStdHandle(STD_OUTPUT_HANDLE); // 獲取輸出控制代碼
HANDLE hStdin = GetStdHandle(STD_INPUT_HANDLE); // 獲取輸入控制代碼
CONSOLE_SCREEN_BUFFER_INFO backInfo;
GetConsoleScreenBufferInfo(hStdout, &backInfo); // 儲存原始資訊
DWORD dwSize;
// 設定顏色
WriteConsoleA(hStdout, "I'm tkorays.\n", 13, &dwSize, NULL); // 未設定字型顏色,內容為ASCII編碼
SetConsoleTextAttribute(hStdout, FOREGROUND_RED | FOREGROUND_INTENSITY);
WriteConsole(hStdout, L"hello\n", 6, &dwSize, NULL); // 設定顏色後輸出,UNICODE編碼
SetConsoleTextAttribute(hStdout, FOREGROUND_GREEN | FOREGROUND_INTENSITY);
system("pause"); // 暫停下,看前面的效果
LPWSTR lpChar = (LPWSTR)HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, 2048);
COORD coord; // 相對座標
coord.X = 0;
coord.Y = 0;
CONSOLE_SCREEN_BUFFER_INFO csbi;
GetConsoleScreenBufferInfo(hStdout, &csbi); // 獲取此時螢幕快取
ReadConsoleOutputCharacter(hStdout, lpChar, 2047, coord, &dwSize); // 獲取螢幕快取
// 顏色陣列,用於後面設定
WORD wColors[3];
wColors[0] = BACKGROUND_BLUE | FOREGROUND_RED | FOREGROUND_BLUE | FOREGROUND_GREEN;
wColors[1] = BACKGROUND_RED | BACKGROUND_GREEN;
wColors[2] = BACKGROUND_GREEN;
// 修改螢幕快取
DWORD dwLen;
for (size_t i = 0; i < dwSize; i++){
// 螢幕中的小寫字母改變樣式
if (lpChar[i] >= 'a'&&lpChar[i] <= 'z'){
// 計算字元座標
coord.Y = i / csbi.dwSize.X;
coord.X = i%csbi.dwSize.X;
WriteConsoleOutputAttribute(hStdout, wColors, 1, coord, &dwLen);
}
}
// 恢復原始字型顏色
SetConsoleTextAttribute(hStdout, backInfo.wAttributes);
return 0;
}
結果:
執行到system("pause");處:
修改小寫字母樣式後:
相關推薦
windows API之控制檯介面
在windows裡面,使用者介面包括控制檯(Console)形式的和視窗(Window)形式的。控制檯形式的介面我們也是經常接觸的,不就是那個黑色的框框嗎?但是我們並沒有直接使用Windows API,通常我們呼叫printf來輸出、scanf來輸入。實際上,這個c語言函式也是通過Windows AP
《精通Windows.API-函式、介面、程式設計例項》範文慶.掃描版.pdf
書籍簡介: 《精通Windows API:函式、介面、程式設計例項》共18章,分為3個部分,第1部分(第1章-第3章)介紹Windows程式設計基礎;第2部分(第4章-第17章)按照程式設計的各個方面進行劃分,包括檔案系統、記憶體管理、程序與執行緒、使用者介面、Shell程式開發、Wind
Windows API 之SendMessage[user32]
函式功能:該函式將指定的訊息傳送到一個或多個視窗。此函式為指定的視窗呼叫視窗程式,直到視窗程式處理完訊息再返回。而函式PostMessage不同,將一個訊息寄送到一個執行緒的訊息佇列後立即返回。 函式原型:LRESULT SendMessage(HWND hWnd,
《精通Windows API-函式、介面、程式設計例項》——第4章檔案系統
第4章檔案系統 4.2 磁碟和驅動器管理 檔案系統的基本概念: 包括磁碟分割槽,卷,目錄,檔案物件,檔案控制代碼,檔案對映 1.磁碟分割槽: 物理磁碟,邏輯磁碟 2.卷: 也稱邏輯驅動器,是NTFS,FAT32等檔案系統組織結構的最高層. 卷是
windows api 之複製檔案到指定目錄和獲得系統資訊
#include <iostream> #include <WINDOWS.H> using namespace std; void copySelf() { char szSelfName[MAX_PATH] ; char szDestNa
Windows API之FindWindow和FindWindowEx函式
1 FindWindow函式: 函式功能:該函式獲得一個頂層視窗的控制代碼,該視窗的類名和視窗名與給定的字串相匹配。這個函式不查詢子視窗。在查詢時不區分大小寫。 函式型:HWND FindWindow(LPCTSTR IpClassN
Zookeeper C API之介面描述
Zookeeper C API介面大部分以zoo_開頭,少量介面以zookeeper_開頭。 除了初始化/銷燬控制代碼、設定日誌等級/日誌流以及一些輔助功能的API外,Zookeeper C API介面分為同步介面和非同步介面:同步介面以zoo_開頭、非同步介面以zoo_a開頭。 1、初
CSS模擬實現windows控制檯介面
文章目錄 效果: 程式碼 製作流程 涉及知識點 如果你希望掌握 待改進之處 只從前天晚上學了CSS的部分知識後,現在看到什麼都想拆成CSS佈局來製作:所以就有了這件小De
Windows-API函式大全(API之程序和執行緒函式)
API之程序和執行緒函式 CancelWaitableTimer 這個函式用於取消一個可以等待下去的計時器操作 CallNamedPipe 這個函式由一個希望通過管道通訊的一個客戶程序呼叫 ConnectNamedPipe 指示一臺伺服器等待下去,直至客戶機同一個命名管
【caffe-Windows】微軟官方caffe之 matlab介面配置
前言按照微軟的官方地址配置可能會出現一個問題caffe_.mexw64找不到引用模組問題,或者在matlab裡面壓根找不到caffe_這個函式,下面會提到這兩個問題。還是按照步驟來吧【PS1】有GPU同樣按照下述步驟,進行即可【PS2】文章在matlab2013a、matla
【caffe-windows】 caffe-master 之 matlab介面配置
平臺環境: win10 64位 caffe-master vs2013 Matlab2016a 第一步: 開啟\caffe-master\windows下的CommonSettings.props檔案, 更改MatlabSupport,改成true(即支援Matlab介面
Windows API入門系列之五 -一個正兒八經的SDK程式
上一篇,講了一個簡單的SDK程式的多種版本的編寫,彈出了一個視窗,顯示了我們計算1到10的結果,計算的程式不是重點,重點在於,一:讓大家認識到Unicode版本的程式和ASCII版本的程式在程式設計方面的區別,以及怎麼樣編寫出通用程式碼的程式。二:怎麼樣運用API或者c++庫函式格式化非字元資料到一個字串
Windows API 程式設計之建立一個windows視窗
直接上程式碼。 /************************************************************************************** * 問題:使用windows API函式建立一個window
【caffe-Windows】微軟官方caffe之 Python介面配置及圖片生成例項
前言 發現許多程式碼還是用python寫的,所以還是配置一下介面吧,雖然博主不會Python,咳咳。在這裡使用的python安裝包是anaconda2,注意使用Python2.7版本的那個安裝包。 百度雲:連結:http://pan.baidu.com/s/1nvrrfQ
Windows API學習之路(二)
今天要講的是DeleteFile這個函式,這個函式用來刪除一個檔案函式原型:BOOL WINAPI DeleteFile( _In_ LPCTSTR lpFileName // 刪除檔名 );引數lpFileName 輸入引數所要刪除的檔案的相對路徑(如”1.txt”相
[轉]Web APi之認證(Authentication)兩種實現方式【二】(十三)
用戶數 ted das 客戶 元素 基礎 目標 開始 net 本文轉自:http://www.cnblogs.com/CreateMyself/p/4857799.html 前言 上一節我們詳細講解了認證及其基本信息,這一節我們通過兩種不同方式來實現認證,並且分析如
Moodle 中文 API 之 文件管理API
reverse string bit /dev/ empty cte extra 回調函數 安全 File API 文件管理 文件夾 1. 概述 2. 文件域 2.1 命名文件域 3. 提供文件給用戶 4. 從用戶那獲取文件 5. 樣例
c#+windows api SetWindowsHookEx 全局鉤子 demo 下載
gravity set clas vsa con font mod img fontsize 效果圖 源代碼下載地址: http://download.csdn.net/detail/dhfekl/7522141 c#+windows a
百度地圖api之----根據用戶ip定位城市
服務 利用 bsp result 城市 blog 經緯度 name 定位 LocalCity 這個類是利用用戶IP地址去百度數據庫裏查詢得到IP所在的城市,用法如下: var objCity = new BMap.LocalCity(); objCity.get(func
HBase概念學習(四)Java API之掃描和過濾器
影響 產生 str 實例 分享 get 批量 java api track HBase主要的CRUD操作就不多介紹了,無非就是Put,Get。Delete三個類的運用。 本文相當於是閱讀HBase權威指南的總結。 一、掃描(Scan) 如今看一下掃