控制台调用win32 API 示例二则
一 控制臺顯示消息框
#include <stdio.h> #include <windows.h>int main(int argc, char* argv[]) {int nRet=MessageBox(NULL, TEXT("Console Win32 API Demo !!!"), "Console Demo", MB_OKCANCEL);//int nRet = ::MessageBox(NULL,"aaa","bbb",MB_OKCANCEL);if(IDOK==nRet){printf("用戶選擇了\"確定\"按鈕 \n");}else{printf("用戶選擇了\"取消\"按鈕 \n");}return 0; }控制臺程序調用win32 API;包含windows.h;
如下的代碼看上去沒錯;第一次執行;出現 無法執行程序;
改成如下;去掉TEXT宏;不一次性構建;先編譯;再執行;結果提示 冒號語法錯誤;
冒號應該是沒錯;調用win32 api,都是::XXX;
去掉冒號;如下圖;直接寫win32 API;結果對了;
二 調用Win32 API在控制臺畫線
#include <stdio.h> #include <stdlib.h> #include <windows.h>HWND WINAPI GetConsoleWindow();int main(int argc, char *argv[]) {HWND hwnd; HDC hdc; HPEN hpen;hwnd = GetConsoleWindow(); hdc = GetDC(hwnd); system("color A3"); system("cls"); hpen = CreatePen(PS_SOLID, 3, RGB(255, 0, 0)); SelectObject(hdc, hpen); MoveToEx(hdc, 20, 20, NULL); LineTo(hdc, 200, 300); DeleteObject(hpen); ReleaseDC(hwnd, hdc); getchar();return 0; }第一次直接執行,也是顯示 無法執行程序;不一次性構建,先編譯,再執行,就可以;可能是版本問題;
代碼簡單解釋:
獲取控制臺句柄到hwnd;
從hwnd獲取設備描述表句柄賦給hdc;
調用dos命令設置控制臺窗口顏色;
調用dos命令清屏;
創建畫筆:實線,寬度3,紅色;
把畫筆選進設備描述表;
設置起始點;畫線;
刪除畫筆;
釋放設備描述表;
等待輸入一個字符然后退出;
關于DOS color命令的說明:
設置默認的控制臺前景和背景顏色。
COLOR [attr] attr 指定控制臺輸出的顏色
屬性顏色
屬性由兩個十六進制數字指定
-- 第一個為背景,第二個則為前景。
每個數字可以為以下任何值之一:
0 = 黑色
8 = 灰色
1 = 藍色
9 = 淡藍色
2 = 綠色
A = 淡綠色
3 = 淺綠色
B = 淡淺綠色
4 = 紅色
C = 淡紅色
5 = 紫色
D = 淡紫色
6 = 黃色
E = 淡黃色
7 = 白色
F = 亮白色
如果沒有給定任何參數,該命令會將顏色還原到 CMD.EXE 啟動時的顏色。
這個值來自當前控制臺窗口、/T 命令行開關或DefaultColor 注冊表值。
如果用相同的前景和背景顏色來執行 COLOR 命令,COLOR 命令會將 ERRORLEVEL 設置為 1。
例如: "COLOR fc" 在亮白色上產生亮紅色
總結
以上是生活随笔為你收集整理的控制台调用win32 API 示例二则的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 图解基本C语言程序一
- 下一篇: Windows控制台程序处理消息编程实例