国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發(fā)設計 > 正文

Windows中控制臺程序的全屏模式開關

2019-11-17 05:36:59
字體:
來源:轉載
供稿:網友
    當你的程序以控制臺方式運行時,按下ALT+ENTER可以將屏幕變成全屏模式。但如何在程序中用Win32 API函數(shù)來實現(xiàn)這個功能呢?據(jù)我所知,微軟沒有提供有關這方面的任何文檔。但是,當用戶按下ALT+ENTER時,Windows 9x用如下非凡的加速鍵ID發(fā)送WM_COMMAND消息到控制臺窗口。

#define ID_SW99vCH_CONSOLEMODE 0xE00F

這個加速鍵ID沒有對外公開,所以你在Win32 API的有關文檔中找不到關于ID_SW99vCH_CONSOLEMODE的內容。
為了在普通窗口和全屏模式之間往返轉換,可以象下面這樣用SendMessage函數(shù)。

SendMessage(hWnd,WM_COMMAND,ID_SW99vCH_CONSOLEMODE,0);

     Windows NT/2000與Windows 9x中控制臺程序的全屏模式開關處理方法是不一樣的。不能通用。在Windows NT/2000中要使用兩個未公開的Win32 API函數(shù)來存取控制臺窗口。這兩個函數(shù)是:

BOOL SetConsoleDisplayMode (
HANDLE hOut,             // 標準輸出句柄
DWord dwNewMode,       // 指定顯示模式
LPDWORD lpdwOldMode, // 用于前一個顯示模式值的變量地址
);

BOOL GetConsoleDisplayMode (
LPDWORD lpdwMode, //用于當前顯示模式值的變量地址
);
這兩個函數(shù)從Kernel32.dll中輸出,但是Kernel32.lib中沒有列出它們。所以我們要用GetPRocAddress函數(shù)動態(tài)加載。方法如下:

typedef BOOL (WINAPI *PROCSETCONSOLEDISPLAYMODE)(HANDLE,DWORD,LPDWORD);
typedef BOOL (WINAPI *PROCGETCONSOLEDISPLAYMODE)(LPDWORD);

PROCSETCONSOLEDISPLAYMODE SetConsoleDisplayMode;
PROCGETCONSOLEDISPLAYMODE GetConsoleDisplayMode;

HMODULE hKernel32 = GetModuleHandle("kernel32");

SetConsoleDisplayMode = (PROCSETCONSOLEDISPLAYMODEELLWND)
GetProcAddress(hKernel32,"SetConsoleDisplayMode");  

GetConsoleDisplayModeplayMode = (PROCGETCONSOLEDISPLAYMODE)
GetProcAddress(hKernel32,"GetConsoleDisplayMode");  

HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE);

DWORD dwOldMode;
SetConsoleDisplayMode(hOut,1,&dwOldMode);

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 永安市| 高青县| 重庆市| 托里县| 来宾市| 康马县| 精河县| 淮北市| 深水埗区| 夏津县| 涟源市| 祥云县| 莱州市| 安庆市| 民权县| 霸州市| 长沙市| 岳阳县| 泾阳县| 阆中市| 容城县| 谷城县| 西贡区| 和龙市| 惠州市| 北碚区| 元阳县| 宜州市| 政和县| 即墨市| 拜泉县| 桓仁| 泸西县| 渑池县| 甘谷县| 淅川县| 平度市| 栾川县| 九江市| 于都县| 福贡县|