請問兩ActiveForm彼此要傳送訊息,有何方法? |
答題得分者是:RaynorPao
|
gemi0305
版主 發表:81 回覆:564 積分:629 註冊:2003-05-11 發送簡訊給我 |
前輩們好,小弟的ActiveForm規模已經越寫越大了,
所以現在需要另開一個Form負責新的功能,
且可以和原有的ActiveForm互傳訊息,
一共試了三種方法...
(一)在ActiveForm上加入一個Form用show的方式... 但似乎是失敗了~
(二)在ActiveForm上加入一個有Form的DLL,結果Form出來了,
但卻不能操控之前的ActiveForm,要關掉新產生出來的Form,
才能回去使用之前的ActiveForm...這...,起碼Form有出來,
只是要傳訊息就...
(三)再寫一個AcitveForm,然後用在現在這個ActiveForm開超連結去叫出來,
但是兩個ActiveForm彼此互看,不知如何對傳訊息?? 所以來請教前輩們,能對我上面三個方法給點意見,
或是有更好的方法授之,
小弟主要功能是可以互傳訊息(資料),
我有去看過之前的文章,但大家好像都沒有回答這個問題...
我相信一定有方法的,望前輩們開解~謝謝了!!
|
dllee
站務副站長 發表:321 回覆:2519 積分:1711 註冊:2002-04-15 發送簡訊給我 |
要互傳訊息很簡單,方法也很多:
1. 用 FindWindow 或其他方法找到對方視窗的 Handle 再 SendMessage 即可。
2. 開個暫存檔兩者一起存取
3. 將交換資料放在 Registry 內的某個 Key 或某些 Key
4. ... 沒空更新的網頁...
http://dllee.ktop.com.tw C及指標教學,計算機概論,資訊管理導論... http://dllee.adsldns.org 介紹Shells,LiteStep,GeoShell....
------
http://www.ViewMove.com |
gemi0305
版主 發表:81 回覆:564 積分:629 註冊:2003-05-11 發送簡訊給我 |
|
dllee
站務副站長 發表:321 回覆:2519 積分:1711 註冊:2002-04-15 發送簡訊給我 |
引言: 謝謝dllee前輩!! 小弟有些疑問想再請教一下 使用的是>>< face="Verdana, Arial, Helvetica"> 哈哈... 我可沒寫過 ActiveForm... 只是直覺認為只要是 Windows 就可以 SendMessage... 也許在 ActiveForm 下真的不可以用吧...引言: 還有第三種方法 「將交換資料放在 Registry 內的某個 Key 或某些 Key」 這是種什麼樣的方法呢? 可否請前輩講的大概,讓我對這方法有初步認識,謝謝!!請參考 BCB Online Help 的 TRegIniFile methods 部分的 TRegIniFile 或 WriteString 都有資料寫入的範例,要讀出資料用 ReadString,如果有其他的資料型態,可以使用 ReadInteger 等等。 另外也可以使用 TRegistry 這個元件,效果相同,與 TRegIniFile 用法大同小異,只是 TRegIniFile 與 TIniFile 的操作方法相同,比較容易操作。 沒空更新的網頁... http://dllee.ktop.com.tw C及指標教學,計算機概論,資訊管理導論... http://dllee.adsldns.org 介紹Shells,LiteStep,GeoShell....
------
http://www.ViewMove.com |
RaynorPao
版主 發表:139 回覆:3622 積分:7025 註冊:2002-08-12 發送簡訊給我 |
引言: 前輩們好,小弟的ActiveForm規模已經越寫越大了, 所以現在需要另開一個Form負責新的功能, 且可以和原有的ActiveForm互傳訊息, 一共試了三種方法... (一)在ActiveForm上加入一個Form用show的方式... 但似乎是失敗了~ (二)在ActiveForm上加入一個有Form的DLL,結果Form出來了, 但卻不能操控之前的ActiveForm,要關掉新產生出來的Form, 才能回去使用之前的ActiveForm...這...,起碼Form有出來, 只是要傳訊息就... (三)再寫一個AcitveForm,然後用在現在這個ActiveForm開超連結去叫出來, 但是兩個ActiveForm彼此互看,不知如何對傳訊息?? 所以來請教前輩們,能對我上面三個方法給點意見, 或是有更好的方法授之, 小弟主要功能是可以互傳訊息(資料), 我有去看過之前的文章,但大家好像都沒有回答這個問題... 我相信一定有方法的,望前輩們開解~謝謝了!! gemi0305 你好: (1)在你的 ActiveForm Project 中按 File/New/Form 就會新增一個 Form1, 然後在你的 ActiveForm 上加一個 Button1,在 ActiveFormX01Impl1.cpp 中加入以下的程式碼 #> > > --
------
-- 若您已經得到滿意的答覆,請適時結案!! -- -- 欲知前世因,今生受者是;欲知來世果,今生做者是 -- -- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 -- |
gemi0305
版主 發表:81 回覆:564 積分:629 註冊:2003-05-11 發送簡訊給我 |
RaynorPao前輩,
sendmessage真的可以在ActiveForm用嗎? @@ *興奮發亮的雙眼*
但我在compiler時,會在.h檔出現 [C++ Error] ActiveFormImpl1.h(32): E2219 Wrong number of arguments in call of macro 'MESSAGE_HANDLER' 我在.h的程式是
public: // User declarations
......
BEGIN_MESSAGE_MAP
MESSAGE_HANDLER(WM_COPYDATA, TWMCopyData, OnCopyDataMsg)
END_MESSAGE_MAP(TActiveForm)
} 小弟不才,請前輩們指點一下,
另外請教前輩一個觀念的問題,
在ActiveForm上用sendmessag時
FindWindow裡第二個參數window name要寫誰?
用Form的話,是寫Form的title,但ActiveForm是嵌在html裡,
所以該寫html的title,還是寫ActiveForm原來的title(雖然被隱藏了) 還有因為小弟以前從來沒用過GetData和SetData,
看了一下說明文件,是用在database上的,
其實看它的example看的不是很懂,在書上也找不到相關的說明,
如果前輩能忙中抽空,可否教授一下,謝謝了
|
dllee
站務副站長 發表:321 回覆:2519 積分:1711 註冊:2002-04-15 發送簡訊給我 |
如果您可以接受用 TRegIniFile 那就把自己的 Handle 放到某個 Key 內不必再叫用 FindWindow 了,如果還是想試試 FindWindow,可以先用 ■【BCB】【發表】取得視窗列表 + 視窗內所有子視窗元件列表(分層顯示)+ 顯示 / 隱藏 / 改文
http://delphi.ktop.com.tw/topic.php?TOPIC_ID=30743 看看取不取得到您所寫的 ActiveForm 的視窗,有可能像你所說的 ActiveForm 是在流覽器內,可能抓不到。此時 TRegIniFile 就可以派上用場 另外,包大人說的 class="code">
TRegIniFile *Reg = new TRegIniFile(""\\Software\\MyComp");
Reg->WriteInteger("MyApp","ActiveForm1",int(this));
delete Reg;
在 ActiveForm2
TRegIniFile *Reg = new TRegIniFile(""\\Software\\MyComp"); TObject *aObject=(TObject *)Reg->ReadInteger("MyApp","ActiveForm1",0); delete Reg; TActiveForm1 *aForm1=dynamic_cast<TActiveForm1 *>(aObject); if(aForm1!=NULL) { MyData=aForm1->GetData(); // 請自行發揮 } > <>沒空更新的網頁... href="http://dllee.adsldns.org">http://dllee.adsldns.org 介紹Shells,LiteStep,GeoShell.... 發表人 - dllee 於 2003/05/27 15:50:53
------
http://www.ViewMove.com |
RaynorPao
版主 發表:139 回覆:3622 積分:7025 註冊:2002-08-12 發送簡訊給我 |
引言: RaynorPao前輩, sendmessage真的可以在ActiveForm用嗎? @@ *興奮發亮的雙眼* 但我在compiler時,會在.h檔出現 [C Error] ActiveFormImpl1.h(32): E2219 Wrong number of arguments in call of macro 'MESSAGE_HANDLER' 我在.h的程式是 public: // User declarations ...... BEGIN_MESSAGE_MAP MESSAGE_HANDLER(WM_COPYDATA, TWMCopyData, OnCopyDataMsg) END_MESSAGE_MAP(TActiveForm) } 小弟不才,請前輩們指點一下, 另外請教前輩一個觀念的問題, 在ActiveForm上用sendmessag時 FindWindow裡第二個參數window name要寫誰? 用Form的話,是寫Form的title,但ActiveForm是嵌在html裡, 所以該寫html的title,還是寫ActiveForm原來的title(雖然被隱藏了) 還有因為小弟以前從來沒用過GetData和SetData, 看了一下說明文件,是用在database上的, 其實看它的example看的不是很懂,在書上也找不到相關的說明, 如果前輩能忙中抽空,可否教授一下,謝謝了 >>< face="Verdana, Arial, Helvetica">gemi0305 你好: (1)試試看把關鍵字 MESSAGE_HANDLER 改成 VCL_MESSAGE_HANDLER,不過,我已 經試過了,在 ActiveForm 被啟動的時候會不穩定,甚至會把整個 IE 給關 閉,原因目前不明 ( > //--------------------------------------------------------------------------- // > > (> --
------
-- 若您已經得到滿意的答覆,請適時結案!! -- -- 欲知前世因,今生受者是;欲知來世果,今生做者是 -- -- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 -- |
gemi0305
版主 發表:81 回覆:564 積分:629 註冊:2003-05-11 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |