控制台訊息的產生及處理

2021-05-21 19:10:16 字數 1139 閱讀 8381

學過視窗程式的朋友都會知道訊息的概念,也知道如何處理訊息(系統訊息或是自定義訊息),但是其實我們的控制台程式也是有訊息的,下面我們來看看控制台程式的訊息的產生及處理:

首先我向大家介紹兩個函式:

setconsolectrlhandler:

bool winapi setconsolectrlhandler(

__in          phandler_routine

handlerroutine ,

__in          bool

add );

這個函式用來定義

ctrl

訊息的處理函式.

generateconsolectrlevent:

bool winapi generateconsolectrlevent(

...);

這個函式用來產生訊息

.

csdn.

下面我們看一些這兩個函式的簡單運用.

#include

#include

bool

winapi

handlerroutine (dword

dwctrltype );

intmain (int

argc , char *argv )

bool

winapi

handlerroutine (dword

dwctrltype )

return

true ; }

這個程式用來捕獲使用者的訊息並進行處理

.這裡可以捕獲的訊息只有5種

. 1

ctrl + c  2  ctrl + break  3 

使用者關閉控制台

4 乙個使用者退出

5 使用者關閉作業系統

下面我們來看一下如何產生控制台訊息,即我們在程式中給控制台傳送訊息.

generateconsolectrlevent

(ctrl_c_event ,0);

在上面的程式**中加上上面一句**,然後執行程式,我們就可以看到執行結果了. 上面**的作用就是向控制台程式傳送了乙個ctrl + c 訊息.

控制台程式的事件處理

控制台程式在 windows 程式的角色中是非常強大且方便的,像vc,c delphi 等等,好多功能強大的語言都支援控制台程式。她沒有複雜的 gui,完全是 32位的程式,能夠呼叫除 gdi 函式之外的 api,支援多執行緒,支援 mfc等等。用她來除錯程式 學習程式設計 做實驗等是再合適不過的了...

控制台關閉的特殊處理

c 處理控制台關閉的時候呼叫了 public delegate bool consolectrldelegate int ctrltype dllimport kernel32.dll private static extern bool setconsolectrlhandler consolec...

沒有控制台視窗的控制台程式

include include pragma comment linker,subsystem windows entry maincrtstartup int main int argc,char argv 編譯後執行程式會彈出乙個訊息框,而沒有背後的控制台視窗。再看看下面的 include in...