錯誤位置:winocc.cpp 中 CWnd::GetProperty/SetProperty 斷言 m_pCtrlSite != NULL 失敗。
代碼中直接使用 CMapX 控件變量 m_ctrlMapX 調用 GetLayers(),但該 ActiveX 控件**未經 Create/SubclassWindow 附著到真實窗口**,m_hWnd = 0,導致 m_pCtrlSite 為空。
float* try::fun1() {
GET dlg; dlg.DoModal(); // 模態對話框
CMapX *m_ctrlMapX; // 未初始化,無 hWnd
CMapXLayers allLr = m_ctrlMapX.GetLayers(); // 崩潰
...
}
CMapX m_ctrlMapX 到 IDC_MAPX。m_ctrlMapX.Create(NULL, WS_VISIBLE|WS_CHILD, rect, this, IDC_MAPX);CDialog::DoModal():模態對話框,內部控件自動創建/銷毀。CWnd::Create():創建子窗口/控件,需手動調用 ShowWindow(SW_SHOW)。將 ActiveX 控件操作移至對話框類內部,或確保控件已成功 Create 後再調用方法。