MFC中的控件是怎么实现的呢?一个按钮就是一个窗口?还是所有按钮画在一个分层窗口上再叠
請教一下MFC中的控件是怎么實現的呢(通過調用什么樣的API,傳遞什么參數)?一個按鈕就是一個窗口?還是所有按鈕畫在一個分層窗口上再疊在主窗口上?還是直接在主窗口上畫圖?
我想到的是:
JavaScript code?
| 1 2 3 4 5 6 7 8 9 10 11 12 13 | HWND?hwndButtonWindow?=?::CreateWindowEx( ????????WS_EX_TRANSPARENT,??????? //拓展樣式-穿透,使其上的點擊等消息發送至其后的主窗口 ????????wndclass.lpszClassName,??? //使用的窗口類名稱 ????????L"button",??????????????? //窗口標題 ????????WS_POPUP?|?WS_CHILD,??????? //樣式-彈出窗口(無標題欄) ????????400,??????????????????????? //x,該位置在主窗口上 ????????430,??????????????????????? //y ????????50,??????????????????????? //w,按鈕的寬 ????????30,??????????????????????? //h,按鈕的高 ????????hwnd,??????????????????? //父窗口句柄 ????????NULL,??????????????????? //菜單 ????????hInstance,??????????????? //程序實例句柄 ????????NULL);??????????????????? //用戶數據 |
然后設置它隨主窗口(hwnd)一起移動
?
引用?5?樓?smwhotjay?的回復:
控件就是控件,了解下win32?sdk編程?就知道了
好的,我看了一下Win32編程,上面說botton控件就是一個子窗口,在User32.dll加載時就已經注冊好這個窗口類了,所以只要用“button”這個類名創建窗口就行了,當該窗口被點擊時會向父窗口發送WM_COMMAND消息,其中LOWORD(wParam)指定了該子窗口(控件)的ID,lParam指定了該子窗口的句柄,而其上顯示的文字其實是它的“標題”
應該就是這樣:
C/C++ code?
| 1 2 3 4 5 6 7 8 9 10 11 12 13 | ::CreateWindowEx( ????0,???????????????????????????????????????????????????//拓展樣式:無 ????"button",?????????????????????????????????????????????????????//窗口類:button ????"Start",????????????????????????????????????????????????????//按鈕顯示文字:Start ????WS_CHILD?|?WS_VISIBLE?|?BS_PUSHBUTTON,?????//WS是窗口樣式,BS是按鈕樣式 ????50,????????????????????????????????????????????????????//窗口(按鈕)的位置和尺寸 ????50, ????80, ????30, ????hwnd,???????????????????????????????????????????????????//父窗口句柄 ????(HMENU)IDC_BUTTON,???????????????????????????????????????????????????//系統菜單 ????hInstance,????????????????????????????????????????????????????//程序實例句柄 ????NULL); |
感謝這位前輩提供線索
?
一般?控件?都是?窗口?(hWnd),?無窗口的?叫?wndless,?是?直接繪制到?屏幕上的?。(DirectDraw)
言簡意賅
?
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的MFC中的控件是怎么实现的呢?一个按钮就是一个窗口?还是所有按钮画在一个分层窗口上再叠的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【ffmpeg for wince】音视
- 下一篇: 注册窗口类 registerclass