Форум: "WinAPI";
Текущий архив: 2007.06.03;
Скачать: [xml.tar.bz2];
ВнизPropertySheet & Windows 95 Найти похожие ветки
← →
clickmaker © (2006-12-27 09:52) [0]Может ли кто-нибудь подсказать, почему данный код криво работает под Win95 с самой первой версией comctl32 - диалог появляется, вкладки появляются, но их содержимое и заголовки - нет. Т.е. проблема видимо в загрузке ресурсов, но почему? Под 98, 2000, 2003 все работает без проблем.
void DefinePropertyPage(PROPSHEETPAGE_V1* psp, int id, DLGPROC DlgProc)
{
ZeroMemory(psp, PROPSHEETPAGE_V1_SIZE);
psp->dwSize = PROPSHEETPAGE_V1_SIZE;
psp->dwFlags = PSP_DEFAULT;
psp->hInstance = hInstance;
psp->pszTemplate = MAKEINTRESOURCE(id);
psp->pfnDlgProc = DlgProc;
psp->lParam = 0;
}
...
PROPSHEETPAGE_V1 psp[NUM_PAGES];
PROPSHEETHEADER psh;
ZeroMemory(&psh, sizeof(PROPSHEETHEADER));
psh.nPages = 0;
DefinePropertyPage(&psp[0], IDD_PAGE1, GeneralDlgProc);
psh.nPages++;
// и так NUM_PAGES раз
...
psh.dwFlags = PSH_PROPSHEETPAGE | PSH_NOAPPLYNOW;
psh.dwSize = PROPSHEETHEADER_V1_SIZE;
psh.hwndParent = hwnd;
psh.pszCaption = GetResourceStr(IDS_CAPTION);
psh.nStartPage = 0;
psh.ppsp = (LPCPROPSHEETPAGE)psp;
PropertySheet(&psh);
Причем, если сказать
DialogBox(hInstance, IDD_PAGE1, то диалог появится. А вот в виде закладки упорно отказывается
← →
tesseract © (2006-12-27 10:49) [1]Попробуй DCOM обновить на машине, ИМХО из-за этого.
← →
clickmaker © (2006-12-27 10:56) [2]
> [1] tesseract © (27.12.06 10:49)
> Попробуй DCOM
DCOM? а он-то тут причем?
← →
Сергей М. © (2006-12-27 11:14) [3]Возможно это прояснит ситуацию:
http://www.microsoft.com.nsatc.net/globaldev/handson/dev/mslu_announce.mspx
← →
clickmaker © (2006-12-27 11:19) [4]Да мужики, вы чего?
Причем тут DCOM и уникод? Обычная АПИшная прога...
В самой 95-то такие диалоги работают. Свойства там и все такое...
← →
tesseract © (2006-12-27 13:51) [5]
> Причем тут DCOM и уникод?
COM он Юникодный.
← →
clickmaker © (2006-12-27 13:54) [6]
> [5] tesseract © (27.12.06 13:51)
да хоть какой.
Не поверю в жисть, что для банального пропертишита нужен COM да еще и уникод. Как он в самой винде-то работает тогда без всего этого?
Не, тут где-то в другом месте собака порылась...
← →
tesseract © (2006-12-27 16:53) [7]Я имел ввиду, что DCOM включает и comctrl32.dll. Потом глянул на код :-)
Ты структуру используешь для contrl32.dll 4.0. А возможно у тебя OSR2 где она 4.7+ или IE 3 стоит.
← →
tesseract © (2006-12-27 16:54) [8]попробуй такое в билд проекта "/D _WIN32_IE=0x0200 "
← →
clickmaker © (2006-12-27 17:03) [9]
> [8] tesseract © (27.12.06 16:54)
у меня #define _WIN32_IE 0x0200 в шапке модуля
и не работает это как раз при версии comctl32 на "голых" 95 с MS Plus (IE2). на OSR2 не тестил, но если стоит ИЕ3 и на 98 и выше - работает
Тут какая-то чешуя с ресурсами, но не пойму пока...
Потому что сам диалог с вкладками создается, но содержимого на них нет и на всех заголовках вкладок 2 одних и тех же невнятных символа, похоже в левой кодировке (сама винда - PE), хотя ресурс аглицкий
Кстати, если юзать PROPSHEETPAGE вместо PROPSHEETPAGE_V1, то диалог вообще не появляется на этой несчастной 95. Что в принципе логично
← →
tesseract © (2006-12-27 17:08) [10]гм проверь версию. Может она ниже 4 ? Тогда работать вроде и не должна. А так - включи обновление comctrl в дистр, или нельзя ни под каким соусом?
← →
clickmaker © (2006-12-27 17:20) [11]
> обновление comctrl в дистр, или нельзя ни под каким соусом?
да надо обеспечить совместимость с самой первой 95. А специфика проги такова, что ее можно и без установки запускать, хоть с КД, хоть с дискеты.
Да и раз МС уверяет, что
Minimum DLL Version comctl32.dll
Header prsht.h
Import library comctl32.lib
Minimum operating systems Windows NT 3.51, Windows 95
то хочется разобраться
← →
clickmaker © (2006-12-29 10:18) [12]Уяснил для себя такую вещь. Софтописательство под казалось бы безнадежно устаревшие системы, такие как 95 - оно дисциплинирует. Заставляет более трепетно относиться к самому коду и ресурсам. Да и к самой ОС.
А вот когда пишешь под ХР да под 2003 - это развращает. На некоторые вещи просто перестаешь обращать внимание - да все одно, ось сама позаботится. Где нужно, добавит; где не нужно - подотрет.
------
Так бы ведь и не узнал, что в проперитшитах под 95 не поддерживаются шаблоны DIALOGEX в ресурсах, так заботливо сгенеренные дизайнером VS2003
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2007.06.03;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.065 c