关于MFC窗口句柄,窗口ID,窗口指针
一、關于窗口句柄
? 首先講一下MFC中句柄的概念,句柄是一種資源標識,他是一個整數,由操作系統分配,用戶(程序員)沒法指定。舉個例子來說,當你創建了一個對話框,那么系統就會為這個對話框分配一定的資源,并且為這個資源分配一個整數來標識這塊資源,那么這個整數就是句柄。 什么是資源,資源當然就是內存,堆棧。對話框的所有資源封裝在一個類中,形成自己的數據結構,這個數據結構占用系統的一塊內存。
? 其次,句柄用HANDLE表示, 定義方式,HANDLE hWnd;? 其實句柄的實現方式就是指針, 句柄是一種指針的指針,系統中應該會有一張資源標識符表, 資源標識符表中放的應該就是指向資源的指針,通過句柄可以找到這個存放資源指針的地方。
? 最后,窗口句柄的使用。常用的是通過窗口句柄投遞一個消息給窗口,使得窗口可以響應一個消息。比如:
? ::SendMessage(GetDlgItem( ID )->m_hWnd,WM_ONEMSG,(WPARAM) RXBuff, (LPARAM) type);
二、關于窗口ID
? 窗口ID是窗口標識的一種別名,有程序員自己定義,比如:IDD_MONITOR_DIALOG。
三、關于窗口指針
我認為窗口指針是指向對話框資源的指針,窗口的資源封裝在一個類中,窗口指針就是指向這個類的指針,通過這個指針可以訪問類中所有的資源(各種成員函數,成員數據)。獲取窗口指針的方法:GetDlgItem( ID ), 返回類型是CWnd *,使用的時候需要強制類型轉換為自己的類類型指針。比如:窗口類名為CTestDlg, 窗口ID為IDD_MONITOR_DIALOG。那么, CTestDlg *p = (CTestDlg*)GetDlgItem( IDD_MONITOR_DIALOG );通過指針p就可以訪問類中的各種資源了。?
? 控件其實也是一種窗口,所以以上的概念也適合控件。
?
總結
以上是生活随笔為你收集整理的关于MFC窗口句柄,窗口ID,窗口指针的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java工程师中兴面试题
- 下一篇: 计算机网络原理(谢希仁第八版)第一章课后