· Начало · Отвђтить · Статистика · Поиск · FAQ · Правила · Установки · Язык · Выход · WASM.RU · Noir.Ru ·

 WASM Phorum —› WASM.WIN32 —› Помогите с PropertySheets

Посл.отвђт Сообщенiе


Дата: Июн 6, 2004 14:50:10

Вроде правильно заполнил PROPSHEETPAGE and PROPSHEETHEADER, но не работает почему-то. Флаги вроде тоже те, которые нужны.
Да ещё этот компилятор,блин, говорит, что ошибок нет. Пробовал по-разному, но всё безуспешно. Поглядите исходник, плизззззз.
Может это из-за того, что я окно создал, для первой и единственной странички, через CreateWind, а не в ресурсах. флаг - PSP_DLGINDIRECT, как я понял, нужен для того, чтобы указать, то, что окно создаётся не в ресурсах...


_767084053__PropertySheets.rar


Дата: Июн 7, 2004 02:02:29

[ NitroCephal: флаг - PSP_DLGINDIRECT, как я понял, нужен для того, чтобы указать, то, что окно создаётся не в ресурсах... ]

Да, но тогда pResource должен указывать на ресурс диалога в памяти, а у тебя это не так.

Я там упростил кое-что. Надеюсь, этого будет достаточно. PSH_MODELESS закомментарен, т.к. если PropertySheet из WM_CREATE звать, то косяки могут быть.


1026760822__PropertySheets.rar


Дата: Июн 7, 2004 08:58:54

Пробовал с индексами структуры создавать, например, объявлять LOCAL psp[3]:PROPSHEETPAGE и заполнять структуры:
mov psp[0]..., mov psp[1]..., mov psp[2]... и с помощью CreatePropertySheetPage создавать по-очереди все страницы и
хэндлы ложить в переменную с соответствующим странице индексом. Потом в psh.phpage ложить хэндл с индексом
нулевым, так как нужно указать первую страничку. Но ничё не работает.

А вот если объявить psp PROPSHEETPAGE <>, psp1 PROPSHEETPAGE <>, psp2 PROPSHEETPAGE <>, и всё это
заполнить и ещё указать флаг PSH_PROPSHEETPAGE, что нужно использовать переменную ppsp, и создать
с помощью PropertySheet без вызовов CreatePropertySheetPage с соответствующими индексами, - то всё ОК.

Вот в С++ так:
PROPSHEETPAGE psheetPage[2];

psheetPage[0].dwSize = sizeof(PROPSHEETPAGE);
psheetPage[0].hInstance = hInst;
psheetPage[0].pszIcon = MAKEINTRESOURCE(IDI_EFFECTS);
psheetPage[0].dwFlags = PSP_USETITLE | PSP_USEICONID;
psheetPage[0].pszTemplate =
MAKEINTRESOURCE(IDD_DIALOG1);
psheetPage[0].pfnDlgProc = DlgProc1;
psheetPage[0].pszTitle = "Set Effects";
psheetPage[0].lParam = 0;

psheetPage[1].dwSize = sizeof(PROPSHEETPAGE);
psheetPage[1].hInstance = hInst;
psheetPage[1].pszIcon = MAKEINTRESOURCE(IDI_TAB);
psheetPage[1].dwFlags = PSP_USETITLE | PSP_USEICONID;
psheetPage[1].pszTemplate =
MAKEINTRESOURCE(IDD_DIALOG2);
psheetPage[1].pfnDlgProc = DlgProc2;
psheetPage[1].pszTitle = "Using Tabs";
psheetPage[1].lParam = 0;

и потом:
HPROPSHEETPAGE hPage[3];
hPage[0] = CreatePropertySheetPage(&psheetPage[0]);
hPage[1] = CreatePropertySheetPage(&psheetPage[1]);
hPage[2] = CreatePropertySheetPage(&psheetPage[2]);

А в ассме получается так нельзя чтоли, только, например, так
.data?
hPage DD ?,?,?
.code
hPage,eax...hPage+4,eax...,hPage+8,eax...,
но тут же известен размер, а когда создаёшь странички ведь там-то размер,наверно, не слово и не двойное слово,
хотя если высчитать sizeof'фом чтоли...короче надо разбираться с этими индексами...ххх

Ладно, хоть чего-то добился с PropertySheet'ом, наконец-то научился хоть так создавать. TabControl куда проще создать,
хотя это не то что мне нужно.

И ещё вопрос: PageControl - это не то же самое, что и PropertySheet?

1040457141__PropertySheets.rar


Дата: Июн 7, 2004 12:39:03

[ NitroCephal: А в ассме получается так нельзя чтоли... ]

Нет, нельзя. В асме всё приходится делать руками. На то он и асм.
LOCAL psp[3]:PROPSHEETPAGE
LOCAL psh:PROPSHEETHEADER

. . .

    mov psp[sizeof PROPSHEETPAGE * 0].dwSize,sizeof PROPSHEETPAGE
    m2m psp[sizeof PROPSHEETPAGE * 0].hInstance,hInstance
    m2m psp[sizeof PROPSHEETPAGE * 0].hIcon,hIcon
    mov psp[sizeof PROPSHEETPAGE * 0].dwFlags, PSP_USEHICON or PSP_USETITLE
    mov psp[sizeof PROPSHEETPAGE * 0].pfnDlgProc,offset DlgProc
    mov psp[sizeof PROPSHEETPAGE * 0].pszTitle,offset App1
    mov psp[sizeof PROPSHEETPAGE * 0].lParam,0
    mov psp[sizeof PROPSHEETPAGE * 0].pszTemplate, IDD_PROP1
        
    mov psp[sizeof PROPSHEETPAGE * 1].dwSize,sizeof PROPSHEETPAGE
    m2m psp[sizeof PROPSHEETPAGE * 1].hInstance,hInstance
    m2m psp[sizeof PROPSHEETPAGE * 1].hIcon,hIcon+4
    mov psp[sizeof PROPSHEETPAGE * 1].dwFlags, PSP_USEHICON or PSP_USETITLE
    mov psp[sizeof PROPSHEETPAGE * 1].pfnDlgProc,offset DlgProc1
    mov psp[sizeof PROPSHEETPAGE * 1].pszTitle,offset App2
    mov psp[sizeof PROPSHEETPAGE * 1].lParam,0
    mov psp[sizeof PROPSHEETPAGE * 1].pszTemplate, IDD_PROP2

... и т.д.


Дата: Июн 7, 2004 13:57:53

Ok, усвоил...=) Спасибо!


Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.050