从别人那里拷来MapX+MFC的程序琢磨,在别人机子上能正确运行,到了自己机器编译通过,点击运行总是提示“建立空文档失败。”,跟踪调试发现,在下面的函数中出现问题:
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CFrameWnd::OnCreate(lpCreateStruct) == -1) //该处CFrameWnd::OnCreate()返回-1,导致弹出出错提示!
return -1;
if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP
| CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||
!m_wndToolBar.LoadToolBar(IDR_MAINFRAME))
{
TRACE0("Failed to create toolbar/n");
return -1; // fail to create
}
百度发现,很多帖子分析了出错原因,但我根据帖中内容调试未有任何收获。无意中找到一个CSDN的老帖子讨论这个问题,恍然大悟。
原来我的机子上没装MapX这个ActiveX控件...
以前没怎么接触过Active控件(自己用ActiveX控件写过一些小程序,但没在别人机子上跑过,故没早遇到这种情况),这次算是一次经验积累吧。
在此提醒跟我情况差不多的新手们一定要注意这个问题,免得浪费太多时间在这些细节上。