討論區快速選單
知識庫快速選單
討論區最近新進100則主題 掌握Salesforce雲端管理秘訣
[ 回上頁 ] [ 討論區發言規則 ]
VS2010 dialog resource 的複製
更改我的閱讀文章字型大小
作者 : sunyear() VC++卓越專家C++頂尖高手貼文超過2000則
[ 貼文 2421 | 人氣 1485 | 評價 6060 | 評價/貼文 2.5 | 送出評價 5 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2012/12/10 上午 11:22:18
我有兩個(或多個)dialog,介面都一樣,只是裡面的一個list control要表列的內容不一樣。
例如一個是Net List, 一個是Device List。
做法是先用resource editor建立Net List的那個dialog,Net List control的ID設為IDC_LSTNET。
然後複製dialog,再把新複製的dialog裡的IDC_LSTNET改成IDC_LSTDEVICE。
這樣的想法基本上沒有錯,但在VS2010,當我把IDC_LSTNET改成IDC_LSTDEVICE時,
Net List的那個dialog裡的IDC_LSTNET也同樣的被改成IDC_LSTDEVICE。
因為這兩個ID在複製時,是一樣的,之後無論怎麼改resorce editor總是要維持這兩個ID是一樣。
我知道,最後的手段是直接去改.RC檔,但若是要複製的dialog一多,真的是煩不勝煩。
有沒有更好的解決辦法?
作者 : sunyear(coco) VC++卓越專家C++頂尖高手貼文超過2000則
[ 貼文 2421 | 人氣 1485 | 評價 6060 | 評價/貼文 2.5 | 送出評價 5 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2012/12/10 下午 01:26:11
剛剛想再把問題搞清楚,結果原問題消失了。測試了幾種編輯方式都無法重現問題。
搞不清楚是怎麼碰到這個地雷了:(
作者 : sflam(Raymond)討論區板主 Visual C++ .NET卓越專家VC++一代宗師新手入門優秀好手資訊類作業求救頂尖高手C++一代宗師貼文超過4000則
[ 貼文 4945 | 人氣 9172 | 評價 32290 | 評價/貼文 6.53 | 送出評價 142 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2012/12/10 下午 09:58:17
如果介面都一樣, 那能不能用同一個介面, 同一個 class, 在建構時傳入多一個參數來決定 list control 要顯示的內容.

作者 : sunyear(coco) VC++卓越專家C++頂尖高手貼文超過2000則
[ 貼文 2421 | 人氣 1485 | 評價 6060 | 評價/貼文 2.5 | 送出評價 5 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2012/12/11 下午 01:23:34
>如果介面都一樣, 那能不能用同一個介面, 同一個 class, 在建構時傳入多一個參數來決定 list control 要顯示的內容.

那個List control會被各別不同的control類別(都是繼承自CListCtrl)做subclassing。
當然也可以動態加入這個"各別不同的control類別",但因為位置和大小還是有些許不同。
使用個別的dialog resource編輯還是比較方便。
抱歉,因為和問題無關,所以這部份沒特別解釋。
比較奇怪的是,這個問題不是"固定"的發生,後來我一直沒辦法重現問題。

感謝回覆。
作者 : sflam(Raymond)討論區板主 Visual C++ .NET卓越專家VC++一代宗師新手入門優秀好手資訊類作業求救頂尖高手C++一代宗師貼文超過4000則
[ 貼文 4945 | 人氣 9172 | 評價 32290 | 評價/貼文 6.53 | 送出評價 142 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2012/12/12 上午 04:06:17
>那個List control會被各別不同的control類別(都是繼承自CListCtrl)做subclassing。

Dialog class 內用 base class pointer (CListCtrl*), 然後在建構時傳入 subclass 物件的位址.

>當然也可以動態加入這個'各別不同的control類別',但因為位置和大小還是有些許不同。
>使用個別的dialog resource編輯還是比較方便。

不同的 dialog, 同樣的控制項 ID 是沒有問題的, 它們不會衝突.
作者 : sunyear(coco) VC++卓越專家C++頂尖高手貼文超過2000則
[ 貼文 2421 | 人氣 1485 | 評價 6060 | 評價/貼文 2.5 | 送出評價 5 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2012/12/12 上午 10:13:17
>不同的 dialog, 同樣的控制項 ID 是沒有問題的, 它們不會衝突.
是,但沒辦法各取有意義的ID名稱。
當然各別的ID可以另定義有意義的名稱指向同一個ID,但這樣做沒省到什麼。倒不如直接去改RC檔了。
作者 : sflam(Raymond)討論區板主 Visual C++ .NET卓越專家VC++一代宗師新手入門優秀好手資訊類作業求救頂尖高手C++一代宗師貼文超過4000則
[ 貼文 4945 | 人氣 9172 | 評價 32290 | 評價/貼文 6.53 | 送出評價 142 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
主題發起人sunyear註記此篇回應為很有道理 2012/12/12 上午 11:46:31
複製 dialog 後, 把第二個 dialog 上所有的控制項全 delete 掉; 然後回到第一個 dialog, 選擇所有的控制項, 把它複製到第二個 dialog 上, 最後才修改第二個 dialog 的 ID.
作者 : sunyear(coco) VC++卓越專家C++頂尖高手貼文超過2000則
[ 貼文 2421 | 人氣 1485 | 評價 6060 | 評價/貼文 2.5 | 送出評價 5 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2012/12/12 下午 01:24:00
>複製 dialog 後, 把第二個 dialog 上所有的控制項全 delete 掉; 然後回到第一個 dialog,
>選擇所有的控制項, 把它複製到第二個 dialog 上, 最後才修改第二個 dialog 的 ID.
感謝!這個問題試了幾次,是沒發生問題。
我多試了幾次原方法(不刪第二個dialog控制項),有時可以重現問題(兩個dialog的控制項ID名稱會同步更改),
大部份不會。似乎第一個dialog做好後有儲存(更新了resoure.h)比較容易發生,但也不是百分百。
你的這個方法可以做為發生問題時的救援方案(至少比去改RC file好),只是不確定它是否百分百不會有問題 :(

VS的resource編輯內部似乎有一個暫性的catch file,但這個catch file的更新並不真實。所以在resource編輯時常和程式員
的期望是不同的。我在編輯ribbon時也常發生。例如一個16X64的 bitmap指定給某個pane,所以控制項可使用
的image ID為0~3(64/16=4個)。然後找擴充了bitmap為16X80,理論上可使用的image ID會變成0~4。
但實際上常常還是只能選0~3,導致無法選新增的圖像(強迫給4會被VS改成-1)。這並不是每次發生,
一旦發生很難糾正,我還碰過重開VS甚至重開機都沒用。後來是把pane的image改成另一個已存在較長的bitmap,
然後選4,再把bitmap改回正確的那一個。編譯後執行是正確的,但在ribbon的編輯窗口還是錯的。
不去理它,隔幾天,ribbon的編輯窗口自動改成正確的圖像了。
 板主 : 青衫 , Raymond
 > Visual C++ - 討論區
 - 最近熱門問答精華集
 - 全部歷史問答精華集
 - Visual C++ - 知識庫
  ■ 全站最新Post列表
  ■ 我的文章收藏
  ■ 我最愛的作者
  ■ 全站文章收藏排行榜
  ■ 全站最愛作者排行榜
  ■  月熱門主題
  ■  季熱門主題
  ■  熱門主題Top 20
  ■  本區Post排行榜
  ■  本區評價排行榜
  ■  全站專家名人榜
  ■  全站Post排行榜
  ■  全站評價排行榜
  ■  全站人氣排行榜
 請輸入關鍵字 
  開始搜尋
 
Top 10
評價排行
Visual C++
1 青衫 11070 
2 Raymond 10090 
3 Clier 7630 
4 小約翰 2500 
5 Cog 2030 
6 coco 1870 
7 aming 1410 
8 牧童哥 1400 
9 r2109 1380 
10 Akira 1350 
Visual C++
  專家等級 評價  
  一代宗師 10000  
  曠世奇才 5000  
  頂尖高手 3000  
  卓越專家 1500  
  優秀好手 750  
Microsoft Internet Explorer 6.0. Screen 1024x768 pixel. High Color (16 bit).
2000-2019 程式設計俱樂部 http://www.programmer-club.com.tw/
0.15625