線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:2151
推到 Plurk!
推到 Facebook!

如何得到ToolBar上每個Button的identifier??

尚未結案
wivern
初階會員


發表:31
回覆:63
積分:28
註冊:2002-07-31

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-05-21 15:16:17 IP:61.219.xxx.xxx 未訂閱
我看MSDN上"Toolbar Controls Overview"的一段話 Each button has an application-defined command identifier associated with it. Button identifiers are usually defined in an application header file. For example, a Paste button can be defined as: #define ID_PASTE 100 When the user selects a button, the toolbar sends the parent window a WM_COMMAND or WM_NOTIFY message that includes the command identifier of the button. 是不是說,如果用 SendMessage(FormHandle,WM_COMMAND,id of the button,0); 就等於按下toolbar上對應那個id的按鈕~ 那要如何得到該按鈕的id呢?? 還是有其他方法可以按選該按鈕呢?? 我用 SendMessage(toolbarWND,TB_PRESSBUTTON,1,0); SendMessage(toolbarWND,TB_PRESSBUTTON,1,0); 結果什麼反應都沒有...
lcsboy
版主


發表:87
回覆:622
積分:394
註冊:2002-06-18

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-05-21 18:48:23 IP:211.23.xxx.xxx 未訂閱
1. 我不知道你是因為要觸發一個Button才去查MSDN 2. 還是說剛好看到MSDN有這麼一段描述才想去try try看呢?    如果是因為我的問題1, 那我想你已經試出來了 如果是因為我的問題2, 這個我倒是沒有試過, 不過, MSDN只是描述OS的behavior, 不見得你直接模擬送ID會有相同的效果, 這只是我的猜想, 如果有錯請高手立即指正
brook
資深會員


發表:57
回覆:323
積分:371
註冊:2002-07-12

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-05-21 19:38:30 IP:218.160.xxx.xxx 未訂閱
ToolButton1->Index
wivern
初階會員


發表:31
回覆:63
積分:28
註冊:2002-07-31

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-05-21 22:18:30 IP:61.231.xxx.xxx 未訂閱
引言: 1. 我不知道你是因為要觸發一個Button才去查MSDN 2. 還是說剛好看到MSDN有這麼一段描述才想去try try看呢? 如果是因為我的問題1, 那我想你已經試出來了 如果是因為我的問題2, 這個我倒是沒有試過, 不過, MSDN只是描述OS的behavior, 不見得你直接模擬送ID會有相同的效果, 這只是我的猜想, 如果有錯請高手立即指正 < face="Verdana, Arial, Helvetica"> 我的原因是1,因為我要控制另一個程式的ToolBar,所以去查MSDN, 我用Spy 抓那個程式的Message,當我按下其中一個button時, 的確會有文章中所提到的message,WPARAM是button的ID, LPARAM是ToolBar的Handle,不過我照著送出一個一樣的訊息, Spy 也有抓到,和我按下button的message一模一樣, 不過程式並沒有執行那個按鈕所對應的動作~ 因此我才想請問各位大大如何控制toolbar, 如果上述的方法不行,有沒有其他的辦法呢??
wivern
初階會員


發表:31
回覆:63
積分:28
註冊:2002-07-31

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-05-22 10:58:38 IP:61.219.xxx.xxx 未訂閱
我後來試的結果,如果程式是用VC 寫的,就可以用此方法, 不過因為我之前試的程式是用BCB寫的,所以沒有用~ 看來是因為用VC 是根據收到的Message來執行程式, 所以可以直接送command給程式~ 不知bcb該如何做到相同的功能呢?
lcsboy
版主


發表:87
回覆:622
積分:394
註冊:2002-06-18

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-05-22 11:12:47 IP:211.23.xxx.xxx 未訂閱
引言: 我後來試的結果,如果程式是用VC 寫的,就可以用此方法, 不過因為我之前試的程式是用BCB寫的,所以沒有用~ 看來是因為用VC 是根據收到的Message來執行程式, 所以可以直接送command給程式~ 不知bcb該如何做到相同的功能呢?
那好像就跟我的推論有點類似嚕 ^^
wivern
初階會員


發表:31
回覆:63
積分:28
註冊:2002-07-31

發送簡訊給我
#7 引用回覆 回覆 發表時間:2003-05-22 11:59:43 IP:61.219.xxx.xxx 未訂閱
如果那個用bcb寫的程式不是我自己寫的, 而我又沒有source code , 是否就沒有辦法了呢??
lcsboy
版主


發表:87
回覆:622
積分:394
註冊:2002-06-18

發送簡訊給我
#8 引用回覆 回覆 發表時間:2003-05-22 12:57:10 IP:211.23.xxx.xxx 未訂閱
引言: 如果那個用bcb寫的程式不是我自己寫的, 而我又沒有source code , 是否就沒有辦法了呢??
You got it~ 反之亦同: 即使是用VC , 如果你沒source code, 如果寫程式的人, 沒有定WM_COMMAND要如何回應, 那你也是沒辦法使用ID就可以啟動它呀. 是不是呢?
wivern
初階會員


發表:31
回覆:63
積分:28
註冊:2002-07-31

發送簡訊給我
#9 引用回覆 回覆 發表時間:2003-05-23 09:33:34 IP:61.219.xxx.xxx 未訂閱
引言:
引言: 如果那個用bcb寫的程式不是我自己寫的, 而我又沒有source code , 是否就沒有辦法了呢??
You got it~ 反之亦同: 即使是用VC , 如果你沒source code, 如果寫程式的人, 沒有定WM_COMMAND要如何回應, 那你也是沒辦法使用ID就可以啟動它呀. 是不是呢? < face="Verdana, Arial, Helvetica"> 經過幾天不屈不撓,不辭辛勞,明查暗訪所得到的心得, 用BCB寫的程式,當點選Menu時,OS會送WM_COMMAND到程式,如果自己寫程式送相同的Message給程式,也可以觸發點選Menu的事件; 而點選Toolbar某個Button時,OS會送WM_COMMAND到程式,但如果自己寫程式送相同的Message給程式,就不會Working; 點選Button的話,就沒有WM_COMMAND的Message。 不過如果是VC 寫的程式,都會有WM_COMMAND的Message送到程式,也可以寫一個程式來送相同的Message給程式來觸發對應的事件~
wivern
初階會員


發表:31
回覆:63
積分:28
註冊:2002-07-31

發送簡訊給我
#10 引用回覆 回覆 發表時間:2003-05-23 22:08:35 IP:61.231.xxx.xxx 未訂閱
寫了這麼多東西,不過忘了結案了~ 標題的問題我已經找到答案了, 用spy 來看程式收到的WM_COMMAND訊息, 其中WPARAM的值就是Button的Identifier~ 只是照著送同樣的值,卻沒有作用~ 這部份就不知該怎麼辦了...
系統時間:2024-04-25 16:18:17
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!