⑴ c語言中message和event有什麼區別
event一般用在線程或進程的同步,可以使用WaitSingleObject來等待。
message一般用在窗口,線程,進程之間的數據傳遞,使用sendmessage,
⑵ c語言問題 if(!event_p){}這里的!是什麼意思。如果寫項目書,iutput改怎麼寫
!前置運算符,表示對其後的符號進行邏輯取反運算。
至於你所述的iutput,不知道這是個什麼符號、代表什麼、跟項目書有什麼關系……
⑶ C#中的event作用在哪裡啊
event 是聲明事件的,是事件的實現原理
⑷ C語言keybd_event問題。
這段代碼沒問題,我親自驗證過。
或者你嘗試我這段代碼,效果應該明顯:
#include<Windows.h>
#include<stdlib.h>
#include<stdio.h>
intmain()
{
//模擬Alt+Tab
keybd_event(VK_MENU,0xb8,0,0);//Alt按下
keybd_event(VK_TAB,0x8f,0,0);//Tab按下
while(1);//停住觀察
keybd_event(VK_TAB,0x8f,KEYEVENTF_KEYUP,0);//Tab釋放
keybd_event(VK_MENU,0xb8,KEYEVENTF_KEYUP,0);//Alt釋放
return0;
}
keybd_event函數模擬了鍵盤輸入。調用該函數會讓系統觸發WM_KEYUP或者WM_KEYDOWN事件。
函數原型是:
VOIDWINAPIkeybd_event(
_In_BYTEbVk,
_In_BYTEbScan,
_In_DWORDdwFlags,
_In_ULONG_PTRdwExtraInfo
);
⑸ c語言鍵盤事件keybd_event
這段代碼沒問題,我親自驗證過。
或者你嘗試我這段代碼,效果應該明顯:
#include<Windows.h>
#include<stdlib.h>
#include<stdio.h>
intmain()
{
//模擬Alt+Tab
keybd_event(VK_MENU,0xb8,0,0);//Alt按下
keybd_event(VK_TAB,0x8f,0,0);//Tab按下
while(1);//停住觀察
keybd_event(VK_TAB,0x8f,KEYEVENTF_KEYUP,0);//Tab釋放
keybd_event(VK_MENU,0xb8,KEYEVENTF_KEYUP,0);//Alt釋放
return0;
}
keybd_event函數模擬了鍵盤輸入。調用該函數會讓系統觸發WM_KEYUP或者WM_KEYDOWN事件。
函數原型是:
VOIDWINAPIkeybd_event(
_In_BYTEbVk,
_In_BYTEbScan,
_In_DWORDdwFlags,
_In_ULONG_PTRdwExtraInfo
);
⑹ C語言或者C++滑鼠點擊怎麼觸發下面這個事件
主要思路如下:
「取車」按鈕:
判斷當前是否有車(總車位不等於300),沒車的時候提示並返回;
有車時,判斷1層是否有車(1層車位不等於140),1層有車則1層車位數+1,否則2層車位數+1;
「存車」按鈕類似。
偽代碼如下:
voidbtnGet_click(objectsender,evente)//「取車」按鈕點擊方法
//VS的話,方法名稱一般可以通過界面雙擊控制項自動生成
{
if(iParkingNum==300)//總車位為300(沒車)
{
MessageBox.Show("沒車提示","提示標題");
return;
}
if(iLv1ParkingNum<140)//1層車位小於140(有車)
iLv1ParkingNum+=1;//1層車位+1
else
iLv2ParkingNum+=1;//2層車位+1
}
voidbtnPut_click(objectsender,evente)//「存車」按鈕點擊方法
{
if(iParkingNum<1)//總車位為0(車位已滿)
{
MessageBox.Show("沒車位提示","提示標題");
return;
}
if(iLv1ParkingNum>0)//1層車位大於0(有車位)
iLv1ParkingNum-=1;//1層車位-1
else
iLv2ParkingNum-=1;//2層車位-1
}
以上,有其他問題請追問。
⑺ c語言的問題
細心一點,其實不難:
typedef struct
440 {
452 } _nc_event;
意思是定義了一個結構,類型為_nc_event,以後可以用它定義變數
---------------------------------------------------
_nc_event FirstNcEvent;
FirstNcEvent.type
一般都是根據這個值確定使用聯合體的哪個成員
FirstNcEvent.data.timeout_msec
FirstNcEvent.data.fev.flags
FirstNcEvent.data.fev.fd
FirstNcEvent.data.fev.result
---------------------------------------------------
441 int type;
這是結構體的第一個成員
442 union
443 {
451 } data;
這是結構體的第二個成員,是一個聯合體
long timeout_msec; /* _NC_EVENT_TIMEOUT_MSEC */
這是聯合體的第一個成員
445 struct
446 {
450 } fev; /* _NC_EVENT_FILE */
這是聯合體的第二個成員,它又是一個結構體,它有三個成員:
447 unsigned int flags;
448 int fd;
449 unsigned int result;
⑻ C/C++程序中的event該如何理解
c c++並沒有event功能。
不過一些事件循環框架 例如windows 的核心庫和qt這類是有event的。 還有很多項目也用到event這個概念,這個玩意就是設計上的一個概念, 一般來說是用來降低耦合的, 比如我寫了一個模塊用來做IO, 成功後會發一個event, coordinator收到這個event會調用其他業務邏輯模塊來做一些操作。 這種設計在C語言項目中比較多, 因為C語言的項目層次結構一般比較散比較平, 不太好做成層次結構, 需要消息隊列這類手段來協調各種功能。
⑼ c語言中eventaers怎麼用
eventaers是包含事件數據的類的基類,用於傳遞事件的細節。
一般在源碼中是以這樣的情況出現的:protected voidEventHandler(object sender, EventArgs e) 。這里的參數,前者是一個對象(其實這里傳遞的是對象的引用,如果是button1的click事件則sender就是button1),後面是包含事件數據的類的基類。
其實簡單點說就是對象(object)sender導致了某個事件的發生,事件的內容就是(e)
在程序中的事件處理函數就是依賴實現的:
比方說你點了一個按鈕,程序怎麼知道應該用哪個函數來處理這個動作呢?那麼EventHandler會告訴程序:"button1(sender)被點擊(e)了,請調用對應的處理函數"。當然這個函數是誰,這個函數要做什麼,是由你自己寫的。
再深入一層,這個過程實際上就是:你的動作被windows捕獲,windows把這個動作作為系統消息發送給程序(可以看message結構),程序從自己的消息隊列中不斷的取出消息,並在消息循環中尋找對應的處理方式,這時message結構中的類似於sender和e就起到了引導程序使用正確的處理函數的作用。
歸根究底,這個sender和e及其一整套的處理方式,只不過是windows消息機制的另外一種表現罷了。
⑽ C語言是怎樣實現滑鼠事件控制的可不可以用純C做
可以,需要調用windowsAPI函數。
頭文件windows.h。
簡單思路:
通過GetStdHandle獲取標准輸入句柄。
再通過ReadConsokeInput將輸入信息存儲到結構體類型INPUT_RECODE變數中。
再通過判斷,截取到滑鼠電擊的事件。
具體API函數、參數、功能還有很多。需要網上找資料可以學。
我這里就簡單寫一個,滑鼠點擊控制台任意位置,並在該位置列印字元串。
#include<stdio.h>
#include<windows.h>
intmain()
{
HANDLEhInput=GetStdHandle(STD_INPUT_HANDLE);//獲取標准輸入設備句柄
INPUT_RECORDinRec;
DWORDres;
COORDp0;
while(1)
{
ReadConsoleInput(hInput,&inRec,1,&res);
if(inRec.EventType==MOUSE_EVENT&&inRec.Event.MouseEvent.dwButtonState==FROM_LEFT_1ST_BUTTON_PRESSED)//滑鼠左鍵
{
p0.X=inRec.Event.MouseEvent.dwMousePosition.X;
p0.Y=inRec.Event.MouseEvent.dwMousePosition.Y;
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),p0);
printf("你在這里點擊的左鍵
");
}
}
return0;
}