[問題] 請問Windows API創建視窗的相關問題

看板C_and_CPP (C/C++)作者 (yolling)時間14年前 (2012/04/24 23:50), 編輯推噓21(21031)
留言52則, 8人參與, 最新討論串1/3 (看更多)
請問一下,我用WINDOWS API寫了一個小程式 裡面我先Register了主視窗,接著CreatWindow 接著我有用LRESULT CALLBACK的方式來做『消息處理』 ↑不知道該怎麼稱呼這個副程式 然後我也拉了一個Dialog當作菜單裡的About 整個程式就像這樣 http://ppt.cc/m7wo 可是我想請問一下,我要如何才能在主視窗的菜單下面那一片空白放東西呢? 好比放按鈕,貼文字之類等等的東西@@ 例如如果要放按鈕,是該在Register的時候就弄好 還是CreateWindow的時候?又或者是在消息處理那邊做? 因為我的菜單就是在消息處理那邊直接WM_CREATE出來的@@ 而我Dialog的視窗是用Visual studio直接拉出來的 那我如果要在主視窗放按鈕的話,也能像Dialog的方式拉出來嗎? 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.34.32.47

04/25 00:01, , 1F
何不直接 CreateDialog 就好了?就不要CreateWindow.
04/25 00:01, 1F

04/25 00:17, , 2F
在Visual studio直接拉元件進Dialog就好了
04/25 00:17, 2F

04/25 00:17, , 3F
消息處理 = Window Prodecure, WndProc, Window Proc
04/25 00:17, 3F

04/25 00:18, , 4F
功力超強者直接寫資源表也可以
04/25 00:18, 4F

04/25 00:18, , 5F
一片空白應該是客戶區 (Client Area),東西應該講 Control
04/25 00:18, 5F

04/25 00:20, , 6F
只有某些 WndClass 如 Dialog 可以在客戶區內放 Control
04/25 00:20, 6F

04/25 02:11, , 7F
耶..p大說的確實是大多情形,是有種做到像MFC-CFormView.
04/25 02:11, 7F

04/25 02:11, , 8F
像是在WM_CREATE時再做一次CreateWindow("Button"...),消
04/25 02:11, 8F

04/25 02:12, , 9F
息訊息用WM_COMMAND / (HWND)lParam==hBtn 方式判斷.
04/25 02:12, 9F

04/25 02:13, , 10F
< 是有點麻煩,重點是畫出來蠻醜的 Orz >
04/25 02:13, 10F

04/25 02:20, , 11F
觀點不同,這樣 CreateWindow 出來的按鈕,我是看成剛好在
04/25 02:20, 11F

04/25 02:21, , 12F
主視窗上空建的另一個視窗,不看成裡面的東西
04/25 02:21, 12F

04/25 02:25, , 13F
動作確實較像空建另一個視窗無誤。
04/25 02:25, 13F

04/25 02:41, , 14F
上面推文都錯很大 ~_~
04/25 02:41, 14F

04/25 02:47, , 15F
錯在哪?請 Ting1024 不吝賜教
04/25 02:47, 15F

04/25 02:50, , 16F
你絕版書看不夠熟喔XD
04/25 02:50, 16F

04/25 02:53, , 17F
請指點一.二
04/25 02:53, 17F

04/25 03:42, , 18F
1. Dialog跟Form要處理的情境不一樣。不能混為一談
04/25 03:42, 18F

04/25 03:42, , 19F
2. 非 Dialog 的WIN32 API沒資源表可用
04/25 03:42, 19F

04/25 03:43, , 20F
3. 附著於Client Area的視窗為Child window
04/25 03:43, 20F

04/25 03:43, , 21F
不是剛好看成空建視窗。
04/25 03:43, 21F

04/25 03:44, , 22F
結論:自己用的工具,拉一拉就好。商業軟體,那LEVEL
04/25 03:44, 22F

04/25 03:45, , 23F
就差很多了,用IDE去拉,跟MFC差不了多少
04/25 03:45, 23F

04/25 03:46, , 24F
台灣會寫商業水準WINDOW AP的人,滿少的。
04/25 03:46, 24F

04/25 03:47, , 25F
也沒啥機會寫,所以就...放輕鬆吧。 XD
04/25 03:47, 25F

04/25 04:37, , 26F
抱歉我錯了。我前面推文中描述的 CreateWindow 只考慮到
04/25 04:37, 26F

04/25 04:38, , 27F
WS_POPUP 特性,此時建出來的按鈕其主視窗只是 Owner 位置
04/25 04:38, 27F

04/25 04:38, , 28F
不限於主視窗的客戶區。應要考慮 WS_CHILD 狀況時的特性
04/25 04:38, 28F

04/25 05:21, , 29F
感謝 Ting1024 賜教。
04/25 05:21, 29F

04/25 12:10, , 30F

04/25 12:10, , 31F
我是自己看這個學的..
04/25 12:10, 31F

04/25 12:14, , 32F
痾...感謝大家的回文,可是有點看不太懂
04/25 12:14, 32F

04/25 12:15, , 33F
是說我不需要createwindow一個視窗,只需要創出dialog
04/25 12:15, 33F

04/25 12:15, , 34F
然後在dialog裡面做我要的按鈕、文字敘述、選單之類的嗎?
04/25 12:15, 34F

04/25 12:16, , 35F
可是這樣的話,那麼主視窗的用意在哪裡呢?我下面那一大片
04/25 12:16, 35F

04/25 12:16, , 36F
的空白都不能放東西嗎?
04/25 12:16, 36F

04/25 12:20, , 37F
感謝樓上提供的網址,我研究研究看看
04/25 12:20, 37F

04/25 12:58, , 38F
樓樓上推薦的書很棒,我當年也是買他的書來學 呵呵
04/25 12:58, 38F

04/25 14:51, , 39F
要怎麼做要看你具體、詳細的需求,版上的人不知道你想幹嘛
04/25 14:51, 39F

04/25 23:12, , 40F
gozha大貼的就是我講的絕版書 還有你搞錯了WindowsAPI和
04/25 23:12, 40F

04/25 23:15, , 41F
MFC之間的差別,簡單說Dialog是MFC下的CObjet衍生類別
04/25 23:15, 41F

04/25 23:19, , 42F
建議看完網路上的繁體版深入淺出MFC在開始寫Code
04/25 23:19, 42F

04/25 23:20, , 43F
之其然不知其所以然 .....是很可怕的事情
04/25 23:20, 43F

04/25 23:20, , 44F
< 所以f大那段話是和我說的嗎? >
04/25 23:20, 44F

04/25 23:22, , 45F
其實 Windows API 也有 Dialog
04/25 23:22, 45F

04/25 23:25, , 46F
我說的 CreateDialog:http://ppt.cc/uxR8
04/25 23:25, 46F

04/25 23:36, , 47F
T大說的沒錯 這兩種情況不一樣,所以在創專案時特別分成
04/25 23:36, 47F

04/25 23:38, , 48F
consloe Dialog Formview這三種(VC6)
04/25 23:38, 48F

04/25 23:39, , 49F
所以不能都摻在一起阿!!
04/25 23:39, 49F

04/25 23:49, , 50F
至於你說的要怎麼去改屬性在裡面放東西 這書上很明確說了
04/25 23:49, 50F

04/25 23:49, , 51F
創建好的時候就決定好了 不能更改~
04/25 23:49, 51F

04/25 23:51, , 52F
以上我講的都是MFC ,WindowsAPI怎麼搞要再找資料
04/25 23:51, 52F
文章代碼(AID): #1FbilK2L (C_and_CPP)
文章代碼(AID): #1FbilK2L (C_and_CPP)