Пишу shellextension как это описано в статье
http://www.rsdn.ru/?article/winshell/shlext5.xmlАвтор(ы): Michael Dunn
Дата: 15.08.2001
Расширение оболочки для добавления новых страниц в набор свойств файлов
с одним изменением -- добавил activex контрол на диалог.
Диалог не создается. (Без activeX создается)
addPages завершается без ошибок.
в PropPageDlgProc приходит сообщение WM_SETFONT а потом сразу WM_DESTROY.
Сообщений об ошибках нигде нет.
Вопрос1: что я делаю не так?
проинициализировать апартаменты пробовал. CoInitializeEx(0,0) и OleInitialize(0); (ставил эти строчки в PropPageCallbackProc и PropPageDlgProc)
хотя понятно что это и не должно было как-то повлиять
для исследования можно попытаться создать вручную контрол при инициализации диалога.
Вопрос2: как это сделать?
CreateWindowEx("GuidControl'a")?
HRESULT SimpleShlExt::AddPages(LPFNADDPROPSHEETPAGE add_page_proc, LPARAM param)
{
PROPSHEETPAGE psp;
psp.dwSize = sizeof(psp);
psp.dwFlags = PSP_USEREFPARENT | PSP_USETITLE | PSP_DEFAULT | PSP_USECALLBACK;
psp.hInstance = GetModuleInstance();
psp.pszTemplate = MAKEINTRESOURCE(IDD_FILETIME_PROPPAGE);
psp.pszTitle = "yyy";
psp.pfnDlgProc = PropPageDlgProc;
psp.lParam = (LPARAM)_tcsdup("xxx");
psp.pfnCallback = PropPageCallbackProc;
psp.pcRefParent = GetRefParent();
HPROPSHEETPAGE h_page = CreatePropertySheetPage(&psp);
if (h_page != 0)
{
if (!add_page_proc(h_page, param))
{
DestroyPropertySheetPage(h_page);
}
}
return S_OK;
}
UINT CALLBACK PropPageCallbackProc(HWND hwnd, UINT msg, LPPROPSHEETPAGE ppsp)
{
return 1;
}
INT_PTR CALLBACK PropPageDlgProc(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam)
{
return FALSE;
}