昨天在其它同事那试的时候突然发现是平台不对。我一直配置的是Win32的,可使用的时候却是Pocket PC2003的。
但现在又出现了一个问题是,编译和生成都成功了,运行时出现错误,DEBUG时dlgdata.cpp文件中代码
HWND CDataExchange::PrepareCtrl(int nIDC)
{
ASSERT(nIDC != 0);
ASSERT(nIDC != -1); // not allowed 此处出现错误
HWND hWndCtrl;
COleControlSite* pSite = NULL;
m_pDlgWnd->GetDlgItem(nIDC, &hWndCtrl);
if (hWndCtrl == NULL)
{
// Could be a windowless OCX
pSite = m_pDlgWnd->GetOleControlSite(nIDC);
if (pSite == NULL)
{
TRACE(traceAppMsg, 0, _T("Error: no data exchange control with ID 0x%04X.\n"

, nIDC);
ASSERT(FALSE);
AfxThrowNotSupportedException();
}
}
m_idLastControl = nIDC;
m_bEditLastControl = FALSE; // not an edit item by default
return hWndCtrl;
}
nIDC一直等于-1以至于断言失败.
该错误是由应用程序的初始化部分:
BOOL CSimplePlayerApp::InitInstance()
{
// 在应用程序初始化期间,应调用一次 SHInitExtraControls 以初始化
// 所有 Windows Mobile 特定控件,如 CAPEDIT 和 SIPPREF。
SHInitExtraControls();
// 标准初始化
// 如果未使用这些功能并希望减小
// 最终可执行文件的大小,则应移除下列
// 不需要的特定初始化例程
// 更改用于存储设置的注册表项
// TODO: 应适当修改该字符串,
// 例如修改为公司或组织名
SetRegistryKey(_T("应用程序向导生成的本地应用程序"

);
//CoInitialize(NULL); //初始化COM库的使用
CSimplePlayerDlg dlg;
m_pMainWnd = &dlg; //一个引用
INT_PTR nResponse = dlg.DoModal(); //此处引起错误
if (nResponse == IDOK)
{
// TODO: 在此处放置处理何时用“确定”来关闭
// 对话框的代码
}
// 由于对话框已关闭,所以将返回 FALSE 以便退出应用程序,
// 而不是启动应用程序的消息泵。
return FALSE;
}
INT_PTR nResponse = dlg.DoModal(); //此处引起错误