MFC 對話框中插入自製 OCX 控件,關聯變量 m_myocx,運行時判斷 if (m_myocx.m_hWnd == NULL) 進入錯誤分支,控件無法使用。
m_hWnd 是 CWnd 封裝的窗口句柄。為 NULL 表示:
Create/CreateControl 失敗)。OnInitDialog 之前訪問)。regsvr32 YourOcx.ocx,提示成功。OnCreate、PreSubclassWindow,輸出調試信息確認調用順序。COleControlModule,檢查 InitInstance 返回 TRUE。// OCX 代碼中
int CMyOcxCtrl::OnCreate(LPCREATESTRUCT lpCreateStruct) {
TRACE(_T("OCX OnCreate called, hwnd=%p\n"), m_hWnd);
if (COleControl::OnCreate(lpCreateStruct) == -1) return -1;
TRACE(_T("OCX OnCreate success, hwnd=%p\n"), m_hWnd);
return 0;
}
觀察輸出窗口確認窗口創建過程。