c語言回調(diào)函數(shù)進(jìn)度條 c語言如何實(shí)現(xiàn)進(jìn)度條

如何用C語言實(shí)現(xiàn)進(jìn)度條

給題主一個(gè)簡(jiǎn)單的進(jìn)度條程序吧~

成都創(chuàng)新互聯(lián)主營(yíng)江城網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營(yíng)網(wǎng)站建設(shè)方案,重慶App定制開發(fā),江城h5重慶小程序開發(fā)搭建,江城網(wǎng)站營(yíng)銷推廣歡迎江城等地區(qū)企業(yè)咨詢

#include?stdio.h

#include?stdlib.h

#include?conio.h

#include?windows.h

#define?LEN?10?/*進(jìn)度條長(zhǎng)度*/

int?main(void)?{

float?p;?/*進(jìn)度條刻度*/

float?progLen;?/*程序總耗時(shí)*/

int?i,?j;

progLen?=?15.0;?

for?(i=1;?i=progLen;?i++)?{

system?("cls");

p?=?(i/progLen)*LEN;?/*計(jì)算程序當(dāng)前進(jìn)度之于進(jìn)度條的比例*/

for?(j=1;?j=(int)(p+0.5);?j++)?/*打印已執(zhí)行刻度*/

printf?("■");

for?(j=1;?j=LEN-(int)(p+0.5);?j++)?/*打印待執(zhí)行刻度*/

printf?("□");

printf?("?%.1f%%",?(i/progLen)*100);?/*計(jì)算程序當(dāng)前進(jìn)度的百分比*/

Sleep(150);

}

putchar?('\n');

getch?();

return?0;

}

運(yùn)行結(jié)果

c++ 回調(diào)C#進(jìn)度條問題

在C#中設(shè)置了2個(gè)函數(shù),用于委托映射到c++回調(diào)函數(shù)控制進(jìn)度條

static void progress_init(int max)

{

pro_form = new ProgressForm();

pro_form.Show();

pro_form.progressBar1.Minimum = 0;

pro_form.progressBar1.Maximum = max;

//ProgressBar progress = new ProgressBar();

//progress.Parent = this;

// progress.

// progress.Show();

}

static void setValue(int value)

{

pro_form.progressBar1.Step = 1;

pro_form.progressBar1.PerformStep();

if (pro_form.progressBar1.Value == pro_form.progressBar1.Maximum)

pro_form.Dispose();

}

然后在C++中,回調(diào)

progress_init(max)

for(int i=0;imax;i++)

{

set_value();

}

程序直接執(zhí)行會(huì)出現(xiàn)問題,突然崩潰,但是在調(diào)試執(zhí)行時(shí)沒有問題,實(shí)在無法理解!

C語言的回調(diào)函數(shù)

callback Function

回調(diào)函數(shù)是應(yīng)用程序提供給Windows系統(tǒng)DLL或其它DLL調(diào)用的函數(shù),一般用于截獲消息、獲取系統(tǒng)信息或處理異步事件。應(yīng)用程序把回調(diào)函數(shù)的地址指針告訴DLL,而DLL在適當(dāng)?shù)臅r(shí)候會(huì)調(diào)用該函數(shù)。回調(diào)函數(shù)必須遵守事先規(guī)定好的參數(shù)格式和傳遞方式,否則DLL一調(diào)用它就會(huì)引起程序或系統(tǒng)的崩潰。通常情況下,回調(diào)函數(shù)采用標(biāo)準(zhǔn)WindowsAPI的調(diào)用方式,即__stdcall,當(dāng)然,DLL編制者可以自己定義調(diào)用方式,但客戶程序也必須遵守相同的規(guī)定。在__stdcall方式下,函數(shù)的參數(shù)按從右到左的順序壓入堆棧,除了明確指明是指針或引用外,參數(shù)都按值傳遞,函數(shù)返回之前自己負(fù)責(zé)把參數(shù)從堆棧中彈出。

理解回調(diào)函數(shù)!

程序在調(diào)用一個(gè)函數(shù)(function)時(shí)(通常指api).相當(dāng)于程序(program)呼叫(Call)了一個(gè)函數(shù)(function)關(guān)系表示如下:

call(調(diào)用)

program --------------------→ dll

程序在調(diào)用一個(gè)函數(shù)時(shí),將自己的函數(shù)的地址作為參數(shù)傳遞給程序調(diào)用的函數(shù)時(shí)(那么這個(gè)自己的函數(shù)稱回調(diào)函數(shù)).需要回調(diào)函數(shù)的 DLL 函數(shù)往往是一些必須重復(fù)執(zhí)行某些操作的函數(shù).關(guān)系表示如下:

call(調(diào)用)

program --------------------→ dll

↑ ¦

¦_______________________________¦

callback(回調(diào))

當(dāng)你調(diào)用的函數(shù)在傳遞返回值給回調(diào)函數(shù)時(shí),你就可以利用回調(diào)函數(shù)來處理或完成一定的操作。至于如何定義自己的回調(diào)函數(shù),跟具體使用的API函數(shù)有關(guān),很多不同類別的回調(diào)函數(shù)有各種各樣的參數(shù),有關(guān)這些參數(shù)的描述一般在幫助中有說明回調(diào)函數(shù)的參數(shù)和返回值等.其實(shí)簡(jiǎn)單說回調(diào)函數(shù)就是你所寫的函數(shù)滿足一定條件后,被DLL調(diào)用!

也有這樣的說法(比較容易理解):

回調(diào)函數(shù)就好像是一個(gè)中斷處理函數(shù),系統(tǒng)在符合你設(shè)定的條件時(shí)自動(dòng)調(diào)用。為此,你需要做三件事:

1. 聲明;

2. 定義;

3. 設(shè)置觸發(fā)條件,就是在你的函數(shù)中把你的回調(diào)函數(shù)名稱轉(zhuǎn)化為地址作為一個(gè)參數(shù),以便于DLL調(diào)用。

網(wǎng)站標(biāo)題:c語言回調(diào)函數(shù)進(jìn)度條 c語言如何實(shí)現(xiàn)進(jìn)度條
文章位置:http://muchs.cn/article10/hjcggo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站制作、營(yíng)銷型網(wǎng)站建設(shè)、搜索引擎優(yōu)化、關(guān)鍵詞優(yōu)化、App設(shè)計(jì)小程序開發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)