[問題] Win32怎樣在Edit上按右鍵跳出popupmenu?

看板C_and_CPP作者 (int a[], int n)時間12年前 (2013/08/31 22:46), 編輯推噓2(2019)
留言21則, 11人參與, 最新討論串1/1
開發平台(Platform): Win32 我只是一個剛入職場一個禮拜的小菜菜... 最近主管丟了一本超厚的WIN32的書叫我寫個輔助工具出來, 恩...摸了三天感覺好艱深呀...=.= 好吧,廢話講完了, 我現在遇到一個問題, 我想要在一個Edit控制項上面, 按右鍵時可以跳出自己自訂的PopUpMenu, Menu我已經寫出來了, 按右鍵也可以跳出選單, 可是.... 他是出現在那個主要的window視窗上面, 在Edit上按右鍵都是出現像是記事本上出現的複製貼上等, 我用不出來要怎樣在Edit上實現這個功能, 有沒有人能大概講一下要在哪裡建置Menu以及給的參數? 在WinProc裡我有 hwndPopMenu = LoadMenu (hInstance, MAKEINTRESOURCE(IDR_MYPOPMENU)) ; hwndPopMenu = GetSubMenu (hwndPopMenu, 0) ; 再來WM_CREATE我建立了一個 hwndEditShow = CreateWindow (TEXT ("Edit"), NULL, WS_CHILD | WS_VISIBLE | ...(略), cxChar, cyChar * 4, cxChar * 116, cyChar * 12, hwnd, (HMENU) ID_EDIT_SHOW, (HINSTANCE) GetWindowLong (hwnd, GWL_HINSTANCE), NULL) ; 接下來WM_RBUTTONDOWN ClientToScreen (hwnd, &point) ; TrackPopupMenu (hwndPopMenu, TPM_RIGHTBUTTON, point.x, point.y, 0, hwnd, NULL) ; 這裡大概是主要的地方, 我東改西就是沒辦法在Edit內按右鍵顯示PopUpMenu... 請問一下我該怎麼做才可以達到我要的效果? 因為我想要在Edit內對文字反白, 然後按右鍵對該文字上色, 這個Edit是不能編輯的,主要是用來顯示, 原本是打算用Static,但是因為它好像不能把文字反白起來,所以用Edit。 還有我再多請問一下, 因為我剛學win32不久, 網路上的資訊也沒有很多, 一般會有一個CALLBACK WinProc來處理程序, 因為有宣告一個ClassWindow才會有的, 那我可以再多宣告一個嗎? 例如使用Edit、ListBox等? 還有, 我對這裡的HWND有一點不是很懂, 以VB裡元件的概念可以解釋嗎? 也就是說,我宣告一個HWND hEdit; 然後再Create一個edit, 那hEdit就代表這一個edit控制項,是這樣嗎? 跟VB裡拉一個text元件,然後Name叫做hEdit是相同意思嗎? 最後, HINTANCE這個"實例", 是指說有註冊一個類別就會有一個實例, 那它就是代表...恩...VB裡的表單(Form)? 然後一個HINTANCE裡面可以有很多個HWND? 不好意思問了這一些問題, 不過如果概念的東西沒有用懂感覺之後會很難進行... 而且API跟一堆Message, 裡面又有wparam、lparam,各自又代表好多資訊... =.= 好想要有像C#一樣明瞭的介面呀~(遠目 好吧=.= 不知不覺又講了一些小抱怨的話, 請問我的那些問題有甚麼解嗎? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 111.240.62.103

08/31 22:49, , 1F
好好的人為什麼要去學 Win32 programming (遠目)
08/31 22:49, 1F

08/31 23:04, , 2F
樓上別這樣 他也是被主管逼的啊 (遠目)
08/31 23:04, 2F

08/31 23:09, , 3F
VB,C# 沒有 void * 資料型態,Win32 裡面的 Handle是 void*
08/31 23:09, 3F

08/31 23:10, , 4F
你可以把它看作是 something of handle 即可.
08/31 23:10, 4F

08/31 23:11, , 5F
不過,話說不能退而求其次用 MFC 嗎?硬用 Win32 實在...
08/31 23:11, 5F

09/01 00:07, , 6F
Win32真的很難學...orz
09/01 00:07, 6F

09/01 00:09, , 7F
google "Creating context menu for win32 API"
09/01 00:09, 7F

09/01 00:09, , 8F
不過還是要說 人活得好好的幹嘛要學Win32 programming
09/01 00:09, 8F

09/01 00:13, , 9F
我不覺得說服上級把介面整個改寫會比摸摸鼻子學Win SDK簡單
09/01 00:13, 9F

09/01 00:42, , 10F
其實不一定要改寫 我記得MFC可以吃hwnd生出對應的instan
09/01 00:42, 10F

09/01 00:42, , 11F
ce 有點像是surrogator/proxy
09/01 00:42, 11F

09/01 00:42, , 12F
推文又有秒數了喔 @@
09/01 00:42, 12F

09/01 00:42, , 13F
要我的話就拿個 framework 寫都比這個輕鬆 (像 Qt 之類的)
09/01 00:42, 13F

09/01 00:49, , 14F
加上MFC要改變link的library,會引入其他問題,比如說dll hell
09/01 00:49, 14F

09/01 00:51, , 15F
程式本身link到一大堆3rd party lib時就得注意,不是一體適用
09/01 00:51, 15F

09/01 00:55, , 16F
其他framework比較沒這問題...萬惡的MFC...
09/01 00:55, 16F

09/01 03:30, , 17F
http://ideone.com/n5k3Pv 忙,不解釋
09/01 03:30, 17F

09/01 11:42, , 18F
謝謝樓上!我開始打算利用額外時間寫個功能美觀兼俱
09/01 11:42, 18F

09/01 11:44, , 19F
的tool出來說服主管放棄win32...如果不行就當作練功吧
09/01 11:44, 19F

09/01 12:32, , 20F
人活得好好的,本身就不該學C++(誤)
09/01 12:32, 20F

09/02 15:42, , 21F
遞上C++ Builder(逃)
09/02 15:42, 21F
文章代碼(AID): #1I8W7NKx (C_and_CPP)