當前位置:首頁 » 編程語言 » c語言設置事件
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言設置事件

發布時間: 2022-12-16 09:08:17

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語言編寫windows窗體程序,怎麼創建按鈕以及怎麼添加按鈕的觸發事件啊

Windows
窗體程序是基於消息機制的,所有控制項,它的本質都是一個窗體,都是使用
CreateWindows
函數來創建,不過類名,則需要指定為系統預先注冊的控制項類,比如,你要創建一個按鈕控制項,就要這樣子
CreateWindows(
"BUTTON",
"按鈕標題"
),CreateWindows
這個函數你應該用了不少了吧,其餘的參數可以參考
MSDN,但是類名我們指定了
「BUTTON」,說明我們要創建一個按鈕,每個按鈕都有一個唯一的
ID,通過你的消息處理函數,可以知道哪個按鈕發生了什麼事件,詳細講的話,非常多,你可以參考
MSDN,或者《Windows
程序設計》這本書

Ⅲ 如何用c語言實現:a,b,c三個事件,依次進行,每到a時就執行事件1,再到b,再執行事件1,再c,再事件1.

典型的狀態機結構,可以去網上找找有關的資料,大概的結構像這樣

enum { state_A, state_B, state_C } state = state_A;

while(1)
{
switch ( state )
{
case state_A:
if ( event_A ) // 這里也可以用switch
{
action_1(); // 在某狀態下發生某事件執行某個動作,並轉入下個狀態
state = state_B;
}
else if ( event_B )
{

}
else
{

}
break;
case state_B:
... ...
}

}

根據你的問題補充,可以這樣劃分狀態
准備輪詢1號機,等待1號機應答(已經輪詢1號機,但1號機未應答),准備輪詢2號機,等待2號機應答,准備輪詢3號機,等待3號機應答,
或者分成3個狀態加一個標志,
輪詢1號機,輪詢2號機,輪詢3號機,加一個有無應答標志,
其實這兩種分法沒有本質區別。
程序框架大概的樣子是這樣
switch ( state )
case 准備輪詢1號機:
發送輪詢1號機的命令
state = 等待1號機的應答;
break;
case 等待1號機的應答;
判斷1號機的應答狀態,可能是正確、錯誤、超時,分別處理,並設置狀態
正確:
state = 准備輪詢2號機
錯誤:
state = 准備輪詢1號機,重試
超時:
state = 准備輪詢1號機,重試,具體做什麼可以很靈活

Ⅳ 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語言中,如何在窗體之間互相調用事件

Form程序的話,最好是把你的邏輯,操作都做成獨立的方法,根據需求設定訪問許可權。

而事件里,僅僅就是調用這些方法而已。

當別的窗體需要使用對應的邏輯時只要寫。

Form1 f1=new Form1();

f1.Show();

f1.xxxx();//你的方法。

Form2 form2=new Form2();

form2.Owner=this;

form2.Show();

Form2 裡面獲取如下

Form1 form1=(Form1)this.Owner;

int i=form1.dataGridView.Rows.Count;//這句就是訪問form1的dataGridview1

Ⅵ C語言如何實現隨機事件

哎,還沒分!!!!
#include <stdio.h>
#include <stdlib.h>

unsigned int get_rand_num_1_5( void )
{
/* 獲取隨機數,並保證每次獲得的不一樣 */
srand((unsigned)time(NULL));
unsigned int r=rand();
/* 將隨機數變為1-5之間 */
r = 1 + r%5;
return r;
}

int main( void )
{
/* 自動獲取的數字 */
int rand_num;
/* 要手動輸入的數字 */
int input_num;
while(1)
{
rand_num = get_rand_num_1_5();
printf( "The rand num is %d\n",rand_num );
printf("please input the num :\n");
scanf( "%d",&input_num );
if( input_num == input_num )
{
printf("you are right!\n");
}
else
{
printf( "The rand num is %d\n",rand_num );
printf( "The input num is %d\n",input_num );
printf("you are wrong!!!");
}
}
return 0;
}

Ⅶ 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;
}

Ⅷ flag在c語言中是什麼

flag在c語言編程中表示變數。

FLAG原本是一個編程指令,常被運用於計算機語言,例如C語言或D語言中,常於用來記載變數的一個參數。

Flag只有1(立起)和0(倒下)兩個數值,通常集中存放在內存中固定的區域里。程序在某種狀態改變的同時改變flag的值,並在其他操作中通過flag了解狀態,並決定接下來的操作。換句話說,flag可以用來幫助程序做復雜條件的判斷。

程序舉例

int a;

flag:a = 1;

cout << a << endl;

goto flag;

a = 2;

cout << a << endl;

程序執行結果:無限循環輸出1

以上內容參考 網路—FLAG

Ⅸ 怎麼用c語言寫隨機事件

隨機數的生成可以用rand和srand函數,如:
#include <iostream>
#include <stdlib.h>
#include <time.h>
using namespace std;
int main( void )
{
int i;
srand( (unsigned)time( NULL ) );

for( i = 0; i < 10;i++ )
printf( " %6d\n", rand() );
}
如果你要限制這個隨機數的范圍,可以用:
6.0*rand()/(RAND_MAX+1.0))
這個表示產生0~6.0之間的一個隨機實數。
之前的srand函數一定要執行,否則rand生成的就不是隨機的了。

Ⅹ 如何運用C語言實現隨機事件

問題1:隨機事件的C/C++語言實現。
第1題:產生隨機數(完型填空)
(1)函數說明
rand()會返回一隨機數值,范圍在0至RAND_MAX 間。在調用此函數產生隨機數前,必須先利用srand()設好隨機數種子,如果未設隨機數種子,rand()在調用時會自動設隨機數種子為1。
0<= rand()<=RAND_MAX(32767=216-1)
試問:產生0到100之間的隨機數的C表達式是什麼?
100*rand()/32767
(2)參考「原型」
#include "iostream.h"
#include "stdlib.h"
#include "time.h" /*需引用的頭文件*/
void out_rand()
{
srand(time(0)); //隨機種子
for(int i=0;i<10;i++)//產生10個0到100隨機數
{
cout<<100*rand()/RAND_MAX<<endl;
}
}
void main()
{
int n;
while(1)
{
cout<<」1----產生隨機數; 2----退出系統」<<endl;
cin>>n;
if(n==1) out_rand();
if(n==2) break;
}
}
(3)設計任務(「好」的演算法:時間代價——語句、空間代價——佔用「內存」)
利用產生隨機數的編程技術,產生一個隨機系統48個0到99之間的「需求量」隨機數,並按間距為10統計各「需求量」區間的數據個數。
#include 「iostream.h」
#include 「stdlib.h」
#include 「time.h」 (填空)
void out_rand()
{
int a[48],I,k;(填空)
for(i=0;i<48;i++) a[i]=0;
srand(time(0));
for(i=0;i<48;i++)
{
k=(99-0+1)* rand()/RAND_MAX+0;
a[(k-0)/10]++;
(例子:
k=(199-100+1)* rand()/RAND_MAX+100;
a[(k-100)/10]++;

}
for(i=0;i<100;i+=10)
{
cout<<i<<」----「<<i+9<<」的數據個數: 「<<a[(i-0)/10](要改)<<endl;
}
}
void main()
{
int n;
while(1)
{
cout<<」1----產生隨機數; 2----退出系統」<<endl;
cin>>n;
if(n==1) out_rand();(填空)
if(n==2) break;
}
}

問題2:數據排序的C/C++語言實現。
第1題:起泡法(上推排序法)
1、「原型」(從小到大排序)
#include 「iostream.h」
void bubble_sort(int *item,int count)
{
register int I,j;
int t;
for(i=0;i<count-1;i++)
//每一遍後都能將i及其後面的數據中的最小值排在最前面(i處)。
for(j=count-1;j>=I;--j)
if(item[j-1]>item[j])
{t=item[j-1];item[j-1]=item[j];item[j]=t;}
}
void main()
{
int a[]={6,8,3,9,7,4,5,1,2};
bubble_sort(a,9);
for(int i=0;i<9;i++)
cout<<a[i]<<」 「;
cout<<endl;
}
2、實踐
(1)調試該「原型」,分析其執行功能。
(2)從鍵盤輸入10個「實數」,請用「起泡法」對其進行從大到小並輸出。
#include 「iostream.h」
void bubble_sort(int *item,int count)
{
register int I,j;
int t;
for(i=0;i<count-1;i++)
for(j=count-1;j>=I;--j)
if(item[j-1]<item[j])
{t=item[j-1];item[j-1]=item[j];item[j]=t;}
}
void main()
{
int a[10];
int i;
for (i=0;i<10;i++)
cin>>a[i];
bubble_sort(a,10);
for(i=0;i<10;i++)
cout<<a[i]<<」 「;
cout<<endl;
}

第2題:選擇排序法
1、「原型」
#include 「iostream.h」
void select_sort(double *item,int count)
{
register int I,j,k;
double t;
for(i=0;i<count-1;i++) //每趟只進行一次交換
{
k=I;
for(j=i+1;j<count;++j)
if(item[k]>item[j]) k=j; //將較小的數排到前面
t=item[k];item[k]=item[i];item[i]=t;
}
}
void main()
{
double b[]={6.8,8.7,3.9,9.6,7.4,4.3,5.2,1.5,2.0};
select_sort(b,9);
for(int i=0;i<9;i++)
cout<<b[i]<<」 「;
cout<<endl;
}
2、實踐
(1)調試該「原型」,分析其執行功能,並比較其與「起泡法」排序演算法的運行時間代價(「最壞」情形)。
(2)從鍵盤輸入10個學生的「英文名」,請用「選擇排序法」對其進行從小到大並輸出。
提示:C/C++中,比較兩個字元串的大小:strcmp(str1,str2),復制字元串:strcpy(str1,str2),頭文件是:string.h
//參考答案
#include 「iostream.h」
#include 「string.h」(填空)
#include 「conio.h」
void main()
{
char item[10][21];
int I,j,k;
char t[21];
cout<<」從鍵盤輸入10個學生的英文名:」<<endl;
for(i=0;i<10;i++)
cin>>item[i];(填空)
//排序
for(i=0;i<9;i++)
{
k=i;
for(j=i+1;j<10;++j)
if(strcmp(item[k],item[j])>0) k=j;
strcpy(t,item[k]);strcpy(item[k],item[i]);strcpy(item[i],t);
}
//輸出
for(i=0;i<10;i++)
cout<<item[i]<<endl;
getche();
}

第3題【《信息管理技術》機試題-條件查詢問題】:下列程序的功能是:選出5000以下符合條件的自然數。條件是:千位數字與百位數字之和等於十位數字與個位數字之和,且千位數字與百位數字之和等於個位數字與千位數字之差的10倍。計算並輸出這些四位自然數的個數cnt以及這些數的和sum。請編寫函數countValue()實現程序的要求,最後調用函數writeDat()把結果cnt和sum輸出到文件OUT13.DAT中。
部分源程序已經給出。
請勿改動主函數main()和輸出數據函數writeDat()的內容。
#include <stdio.h>
int cnt,sum;
void writeDat(); //寫盤函數的聲明
void countValue()
{ }
void main()
{
cnt=sum=0;
countValue();
printf("滿足條件的自然數的個數=%d\n",cnt);
printf("滿足條件的自然數的和=%d\n",sum);
writeDat(); //調用寫盤函數
}
void writeDat() //寫盤函數的實現
{
FILE *fp;
fp=fopen("OUT13.DAT","w");
fprintf(fp,"%d\%d\n",cnt,sum);
fclose(fp);
}
////參考答案/////////
void countValue()
{
int i,thou,hun,ten,data;
for(i=5000;i>=1000;i--)
{
thou=i/1000;
hun=i%1000/100;
ten=i%100/10;
data=i%10;
if(thou+hun==ten+data && thou+hun==(data-thou)*10)
變化的是條件!!!參考答案的其他內容都要記下來!!!
{ sum+=i; cnt++; }
}
}
要求:
(1)調試該程序。
(2)用文字說明countValue()「演算法」的控制流程。

第4題【《信息管理技術》機試題-出圈問題】:設有n個人圍坐一圈並按順時針方向從1到n編號,從第s個人開始進行1到m的報數,報數到第m個人,此人出圈,再從他的下一個人重新開始1到m的報數,如此進行下去直到所有的人都出圈為止。現要求按出圈次序每10人一組,給出這n個人的順序表。請考生編制函數Josegh()實現此功能,並調用函數writeDat()把結果p輸出到文件JOSE.DAT中。
設n=100,s=1,m=10。
(1)將1到n個人的序號存入一維數組p中;
(2)若第i個人報數後出圈,則將p[i]置於數組的倒數第i個位置上,而原來第i+1個至倒數第i個元素依次向前移動一個位置;
(3)重復第(2)步直至圈中只剩下p[1]為止。
注意:部分源程序已經給出。
請勿改動主函數main()和輸出數據函數writeDat()的內容。
#include <stdio.h>
#define N 100
#define S 1
#define M 10
int p[100],n,s,m;
void writeDat(void);
void Josegh(void)
{ }
void main()
{
m=M; n=N; s=S;
Josegh();
writeDat();
}
void writeDat(void)
{
int i;
FILE *fp;
fp=fopen("JOSE.DAT","w");
for(i=N-1;i>=0;i--)
{
printf("%4d",p[i]);
fprintf(fp,"%4d",p[i]);
if(i%10==0)
{
printf("\n");
fprintf(fp,"\n");
}
}
fclose(fp);
}
////參考答案/////////
void Josegh(void)
{
int i,j,k,s1,w;
s1=s;
for(i=1;i<=n;i++)
p[i-1]=i;//給每個人編號
for(i=n;i>=2;i--)
{
s1=(s1+m-1)%i;
if(s1==0) s1=i;
w=p[s1-1];
for(j=s1;j<=i-1;j++)
p[j-1]=p[j];
p[i-1]=w;
}
}