CAxPropertyPage
От: Tumypka  
Дата: 13.11.03 13:29
Оценка:
После перехода на 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'ы — мои ли, майкросовтовские — просто не создаются. Никаких сообщений про ошибки при этом нету. Что же не так?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.