После перехода на Visual Studio 7 в диалоге, основанном на CAxPropertyPage, не создаются ActiveX'ы. Никакие. Как будто их и не было. Что очень странно, т.к. всё это прекрасно компилировалось и работало под VC6 и WTL 7. После этого я попробовал создать совсем простенькое тестовое приложение
class CPage1 :
public CAxPropertyPageImpl<CPage1>
{
public:
CPage1()
{
}
enum {IDD = IDD_PAGE1};
BEGIN_MSG_MAP(CPage1)
COMMAND_HANDLER(IDOK, BN_CLICKED, OnClickedOK)
COMMAND_HANDLER(IDCANCEL, BN_CLICKED, OnClickedCancel)
CHAIN_MSG_MAP(CAxPropertyPageImpl<CPage1>)
END_MSG_MAP()
LRESULT OnClickedOK(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled)
{
EndDialog(hWndCtl, wID);
return 0;
}
LRESULT OnClickedCancel(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled)
{
EndDialog(hWndCtl, wID);
return 0;
}
};
class CMainDlg :
public CPropertySheetImpl<CMainDlg>
{
public:
CMainDlg()
{
AddPage(m_page1);
}
BEGIN_MSG_MAP(CMainDlg)
CHAIN_MSG_MAP(CPropertySheetImpl<CMainDlg>)
END_MSG_MAP()
CPage1 m_page1;
};
CAppModule _Module;
int WINAPI _tWinMain(HINSTANCE hInstance, HINSTANCE /*hPrevInstance*/, LPTSTR lpstrCmdLine, int nCmdShow)
{
HRESULT hRes = ::CoInitialize(NULL);
// this resolves ATL window thunking problem when Microsoft Layer for Unicode (MSLU) is used
::DefWindowProc(NULL, 0, 0, 0L);
AtlInitCommonControls(ICC_COOL_CLASSES | ICC_BAR_CLASSES); // add flags to support other controls
hRes = _Module.Init(NULL, hInstance);
ATLASSERT(SUCCEEDED(hRes));
CMainDlg dlg;
int nRet = dlg.DoModal();
_Module.Term();
::CoUninitialize();
return nRet;
}
— опять неудача.
Любые ActiveX'ы — мои ли, майкросовтовские — просто не создаются. Никаких сообщений про ошибки при этом нету. Что же не так?