Re: [問題] 請問Windows API創建視窗的相關問題
※ 引述《EdisonX (閉上眼的魚)》之銘言:
: 為避免誤會愈積愈深,回個文。
: 另我知一直重覆引用、針對推文者的每句話做過度解讀是不禮貌之事,
: 唯此篇我認為只有這麼做,才可撥雲見日,
: 若有得罪,先行道歉。
何需道歉?討論區本來就是討論用的,針對每句話表示您做學問很認真謹慎,應該的啊。
論禮貌嘛,老實說這個版最有禮貌的人應該就是你了。
有時候看到有些人的文章,剛好是我能幫忙的,但看到對方一副高高在上,好像大老闆
出題要給手下機會表現的這種,我通常不太想理;
但每每看到前輩發文的風采時,哪怕小弟再怎樣沒把握,也想略獻棉薄之力。
==
其實我覺得前面 E 大您講得那些,沒什麼問題,主要是這邊有爭議吧:
推
04/25 03:42,
04/25 03:42
推
04/25 23:36,
04/25 23:36
→
04/25 23:38,
04/25 23:38
我比較武斷,我覺得原討論串的發文者應該是在做練習,還停留在 WndClass、WndProc 的
學習階段,很多名詞、東西都搞不清楚,就好像一個客戶太外行,不知道我們可以
替他寫出什麼東西一樣,無法給出具體的需求,今天說好的,也許明天就要否決。
所以建議他用 Dialog 沒有錯,告訴他可以用 MFC CFormView 也沒有錯,這只是一個提供
菜單給客人的過程,我不認為哪邊說的有問題。
當然如果絕對不用 MFC,那一開始就不必考慮 CFormView。
如果可以用 MFC,那要用哪種,只能原 PO 自己決定,不是說你要寫瀏覽器就一定
要用 CFormView,不能用 CDialog,只是多數情況用 CFormView 會比較好,
也不是說你要寫小算盤,就一定要用 CDialog,這沒有強制規定的。
==
另外 CreateWindow 那邊是我的錯,當時一看到 E 大說用 CreateWindow("buttton",..)
我反射想到的是 Popup window,這類視窗建立後出現的位置,不會像 child window
一樣,一定要限制在 hWndParent 的客戶區內。整個桌面哪個位置都可以出現,那我
以為 E 大正在說這個東西,所以形容它是剛好建立在 hWndParent 上空而已。
當然也不是說一個程式客戶區內的視覺元件,就一定是 WS_POPUP 或 WS_CHILD,
不是一定要寫成子視窗,比如 MFC 有一類控件 (Control) 叫 CControlBar (工具列、
狀態列...),他們平常待在程式裡面,這時候是 WS_CHILD,為停駐狀態 (Docking),
那你可以把他拉到程式外面,變成獨立的 floating 視窗,此時又
變成 WS_POPUP 狀態,座標位置可以隨便移動。
所以完整的講法是,你用 CreateWindow 建立控制項時,有可能是 WS_CHILD (子視窗)
也有可能是 WS_POPUP,端看你希望該控件是 floating 或 docking 狀態。
==
補充一下,前面推文我說只有部份 WndClass 裡面可以放東西,這講得太簡陋,
本來懶得詳細說明,大家跳過我裝死就好,但都回文了就重新解釋。
普通自己寫的 WndClass 所建立出來的視窗,他客戶區裡面一片空白,你可以用
CreateWindow 放一些東西進去客戶區,但這不是它原本直接支援的。
而 dialog、rebar、staus bar、dialog bar、list view 這類東西才是我想說的,他們
有直接支援一些介面,讓你放一些東西進去,而不必使用 CreateWindow 來自己
設定座標位置去建立。
我是想讓原發文者,自己去看看有哪些 contorl 有支援放東西的介面,而不要什麼
東西都 CreateWindow 去土法煉鋼。
==
在補充一個 resource 那邊,在 Dialog 裡面是可以使用部份資源表裡的東西,
主要就是底層的 CreateDialog 函數會依造資源的內容來建立視窗,但是像
字串資源,你不是 Dialog 也可以用,畢竟 resource 只是跟 PE 檔掛勾,只要用
resource 相關的 Windows API 就可以讀取,甚至你的程式不是 GUI 也無所謂。
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 124.8.128.199
※ 編輯: purpose 來自: 124.8.128.199 (04/26 03:18)
※ 編輯: purpose 來自: 124.8.128.199 (04/26 03:19)
推
04/26 15:02, , 1F
04/26 15:02, 1F
推
04/26 19:53, , 2F
04/26 19:53, 2F
→
05/01 20:23, , 3F
05/01 20:23, 3F
→
05/01 20:23, , 4F
05/01 20:23, 4F
討論串 (同標題文章)
完整討論串 (本文為第 3 之 3 篇):
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章