建立DLL時遇到要使用Form上的元件該怎麼辦 |
答題得分者是:malanlk
|
我叫ㄚ丸
一般會員 發表:16 回覆:35 積分:10 註冊:2005-07-14 發送簡訊給我 |
各位前輩 你們好
小弟學著使用DLL檔來建立自己的函式庫遇到一個問題
請前輩可以指導一下小弟 謝謝
問題如下
一般在寫 2值化的處理 都會習慣用 ScrollBar 來幫忙調整 臨界值,然後用Edit來秀出所調整的值 因此我在DLL體下寫的2值化的函式法如下
void __declspec(dllexport) __stdcall Threshold(Graphics::TBitmap *TBmp) { Byte *ptr_b; int gray; int threshold_1=StrToInt(Form1->Edit1->Text); <<<<<這裡出錯 int threshold_2=StrToInt(Form1->Edit2->Text); <<<<<這裡出錯 for(int j=0;j |
GGL
資深會員 發表:104 回覆:600 積分:335 註冊:2006-11-05 發送簡訊給我 |
#include這是我在dll使用Form的方法,先開啟dll project,再開一個Form....接下來你應該會了 |
malanlk
尊榮會員 發表:20 回覆:694 積分:577 註冊:2004-04-19 發送簡訊給我 |
照你的程式來看 這個函數其實應該獨立運作, 我建議增加參數 void __declspec(dllexport) __stdcall Threshold(Graphics::TBitmap *TBmp, int iStart, int iEnd)
{
Byte *ptr_b;
int gray; int threshold_1=iStart; //StrToInt(Form1->Edit1->Text); <<<<<這裡出錯
int threshold_2=iEnd; //StrToInt(Form1->Edit2->Text); <<<<<這裡出錯
|
我叫ㄚ丸
一般會員 發表:16 回覆:35 積分:10 註冊:2005-07-14 發送簡訊給我 |
謝謝 前輩的回答
小弟昨晚努力的思考後 "間接"的解決問題了
我的方式如下
先假設DLL所產生的CPP檔為副程式 然後設我們另開專案的CPP檔為主程式
我在副程式中開一動態記憶體的方式去改值(2值化臨界值)然後在主程式用一個小副程式用return Form1->ScrollBar1->Poition;的方式傳回更改動態記憶體的值 以達到可以利用ScrollBar1去改變DLL裡面的值(感覺上好像太複雜 不過因自己想出來 還有一點成就感囉^^") To GGL 前輩
你的方式看起來應該是正規的做法
不過因為自己的程式很弱又第一次玩DLL所以也沒辦法完全看懂 不過有時間我會馬上玩玩看前輩的方法 若有不懂在請前輩指導囉 To malanlk 前輩
前輩提的方式和小弟的想法似乎有類似的地方都是用另一變數去改值 但小弟一時間無法看出前輩的方式是要如何即時去修改值(達到ScrollBar1去改值的效果) 很抱歉 我會多多努力的^^"
void __declspec(dllexport) __stdcall Threshold(Graphics::TBitmap *TBmp, int iStart, int iEnd) { Byte *ptr_b; int gray; int threshold_1=iStart; int threshold_2=iEnd; |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |