第一點,使用標頭檔案
要在console裡進行操作,首先先說一下readconsoleinput()函式。
msdn的具體解釋如下:
來自這個函式主要是用於獲取控制台資訊。
其實lpbuffer所返回的資訊中,包括了多個事件,其中有focusevent,keyevent,windowbuffersizeevent,mouseevent, menuevent多個事件。
我們這裡引用滑鼠事件,mouseevent。而在lpbuffer中返回的lpbuffer.event.mouseevent.dwmouseposition就是滑鼠在控制台介面裡的所在位置。
左鍵單擊事件
判斷滑鼠事件的話,就可以通過 lpbuffer.eventtype == mouse_event && lpbuffer.event.mouseevent.dwbuttonstate == from_left_1st_button_pressed來判斷左鍵單擊事件。
左鍵雙擊事件
lpbuffer.eventtype == mouse_event && lpbuffer.event.mouseevent.dweventflags == rightmost_button_pressed
右鍵單擊事件
lpbuffer.eventtype == mouse_event && lpbuffer.event.mouseevent.dwbuttonstate == rightmost_button_pressed
其餘的事件如下:
所以最後在程式中可以順利判斷各類滑鼠狀態。
簡單的**例程。
/
// writen by tianhuahua//
/#include "stdafx.h"
#include "windows.h"
using namespace std;
int main()
if (eventmsg.eventtype == mouse_event && eventmsg.event.mouseevent.dweventflags == rightmost_button_pressed)
} return 0;
}
有乙個問題需要注意:vs中編譯,在標頭檔案處,
#include "會出現類似錯誤。handle:為宣告的識別符號。windows.h
"#include
"stdafx.h
"
error c2146: 語法錯誤 : 缺少「;」(在識別符號「hservstatus」的前面)解決方法:改變標頭檔案的順序如下:error c2501: 「hservstatus」 : 缺少儲存類或型別說明符
error c2146: 語法錯誤 : 缺少「;」(在識別符號「hsstat」的前面)
error c2501: 「hsstat」 : 缺少儲存類或型別說明符
error c2065: 「service_table_entry」 : 未宣告的識別符號
error c2146: 語法錯誤 : 缺少「;」(在識別符號「dispatchtable」的前面)
error c2065: 「dispatchtable」 : 未宣告的識別符號
error c2059: 語法錯誤 : 「]」
error c2143: 語法錯誤 : 缺少「;」(在「」的前面)
warning c4550: 表示式計算為缺少引數列表的函式
error c2143: 語法錯誤 : 缺少「;」(在「,」的前面)
error c2143: 語法錯誤 : 缺少「;」(在「」的前面)
error c3861: 「startservicectrldispatcher」: 即使使用引數相關的查詢,也未找到識別符號
error c3861: 「dispatchtable」: 即使使用引數相關的查詢,也未找到識別符號
error c2065: 「sc_handle」 : 未宣告的識別符號
error c2146: 語法錯誤 : 缺少「;」(在識別符號「schscmanager」的前面)
error c2065: 「schscmanager」 : 未宣告的識別符號
error c2146: 語法錯誤 : 缺少「;」(在識別符號「schservice」的前面)
error c3861: 「sc_handle」: 即使使用引數相關的查詢,也未找到識別符號
error c2065: 「schservice」 : 未宣告的識別符號
error c2065: 「sc_manager_all_access」 : 未宣告的識別符號
error c3861: 「schscmanager」: 即使使用引數相關的查詢,也未找到識別符號
error c3861: 「openscmanager」: 即使使用引數相關的查詢,也未找到識別符號
error c3861: 「schscmanager」: 即使使用引數相關的查詢,也未找到識別符號
#include 「stdafx.h」
#include
在Console工程中引用CString
cstring 是封裝的非常不錯的乙個類,相比於stl的string,它提供了更加豐富的成員方法。雖然在控制台工程中,string基本已經能夠完成需要的功能,但是,如果能夠偷懶一下的話 在console工程中引用cstring方法如下 1.工程設定 project setting general 中...
在WinMain中嵌Console視窗
很多時候,除錯gui程式是很不方便的,通常的做法是使用messagebox,但是作為乙個模態視窗,它經常產生不必要的訊息,比如killfocus,setfocus或者paint,從而影響除錯的執行過程。當然,使用vc的偵錯程式也不錯,但是這樣也很容易造成視窗切換從而產生干擾訊息。因此,如果能像在控制...
Windows API了解使用者是否在使用滑鼠或鍵盤
程式設計之美 1.10的最後提到了乙個問題,就是windows中什麼api能了解使用者是否在使用滑鼠或鍵盤,或者發現使用者在幾秒之內沒有滑鼠 鍵盤的輸入?網上搜尋了一下資料,覺得大概有兩種方法 1 getinputstate 函式原型 bool getinputstate void 函式功能 該函式...