Народ!
Хелп! Создаю я значит прогу под ХР и главным окном делаю диалог из ресурсов функцией CreateDialog, но оно почему-то не создается. Может кто скажет почему, может потому, что не регистрирую класс? Если да, то как для диалога зарегистрировать класс? Заранее спасибо!!!
Здравствуйте, Green_B, Вы писали:
G_B>Хелп! Создаю я значит прогу под ХР и главным окном делаю диалог из ресурсов функцией CreateDialog, но оно почему-то не создается. Может кто скажет почему, может потому, что не регистрирую класс? Если да, то как для диалога зарегистрировать класс? Заранее спасибо!!!
При вызове функции CreateDialog необходимо вызвать ShowWindow(hDlg,nCmdShow), иначе окно есть, но его не видно. hDlg — это возвращаемое значение: HWND hDlg=CreateDialog(...).
Проверь, если hDlg==NULL то значит смотри GetLastError и FormatMessage .
Если не ноль, то ShowWindow(...) тебе поможет.
А можно проще. Есть такая фича — DialogBox:
Здравствуйте, FlashBack, Вы писали:
FB>Здравствуйте, Green_B, Вы писали:
G_B>>Хелп! Создаю я значит прогу под ХР и главным окном делаю диалог из ресурсов функцией CreateDialog, но оно почему-то не создается. Может кто скажет почему, может потому, что не регистрирую класс? Если да, то как для диалога зарегистрировать класс? Заранее спасибо!!!
FB>При вызове функции CreateDialog необходимо вызвать ShowWindow(hDlg,nCmdShow), иначе окно есть, но его не видно. hDlg — это возвращаемое значение: HWND hDlg=CreateDialog(...). FB>Проверь, если hDlg==NULL то значит смотри GetLastError и FormatMessage . FB>Если не ноль, то ShowWindow(...) тебе поможет. FB>А можно проще. Есть такая фича — DialogBox:
FB>INT_PTR DialogBox( HINSTANCE hInstance, FB> LPCTSTR lpTemplate, FB> HWND hWndParent, FB> DLGPROC lpDialogFunc FB>);
FB>Она не возвращает указатель на окно, но для него не требуется ShowWindow. FB>Удачи!
Дело в том, что у меня в параметрах ресурса стои Висибл (да и ШовВиндов вызывал) просто он мне возвращает ноль (NULL)! Вот в этом-то и проблема!!!
Здравствуйте, Green_B, Вы писали:
G_B>Дело в том, что у меня в параметрах ресурса стои Висибл (да и ШовВиндов вызывал) просто он мне возвращает ноль (NULL)! Вот в этом-то и проблема!!!
Покажи, как ты вызываешь CreateDialog.
А если не лень, то весь проэкт мыльни, подровняю
Здравствуйте, FlashBack, Вы писали:
FB>Здравствуйте, Green_B, Вы писали:
G_B>>Дело в том, что у меня в параметрах ресурса стои Висибл (да и ШовВиндов вызывал) просто он мне возвращает ноль (NULL)! Вот в этом-то и проблема!!!
FB>Покажи, как ты вызываешь CreateDialog. FB>А если не лень, то весь проэкт мыльни, подровняю
Вот так выглядит функция ВинМэйн (если не хватит — прошу адрес e-mail, мыльну проект, а пока заранее спасибо):
lpTemplate
[in] Specifies the dialog box template. This parameter is either the pointer to a null-terminated character string that specifies the name of the dialog box template or an integer value that specifies the resource identifier of the dialog box template. If the parameter specifies a resource identifier, its high-order word must be zero and its low-order word must contain the identifier. You can use the MAKEINTRESOURCE macro to create this value.
Да нет — дело в том, что я пишу прогу работая в ХР, так вот, если в свойствах файла я ставлю совместимость с Win98 или другой виндой, то он работает, если же нет, то не может создать окно. Потом я перенес экзешник на комп с 98 виндой, но там он тоже не смог создать окно. (кстати, я предложенный вариант тоже попробовал — не катит).
Здравствуйте, Green_B, Вы писали:
G_B>Да нет — дело в том, что я пишу прогу работая в ХР, так вот, если в свойствах файла я ставлю совместимость с Win98 или другой виндой, то он работает, если же нет, то не может создать окно. Потом я перенес экзешник на комп с 98 виндой, но там он тоже не смог создать окно. (кстати, я предложенный вариант тоже попробовал — не катит).
Дело не в XP. Исспользуй MAKEINTRESOURCE , иначе получишь совершенно неизвестный результат. Так с памятью могут быть глюки.
А если это не помагает, то переустанови окно.
Кстати, нет ли у тебя там Common Controls в твоём диалоге?
P.S. Пришли код обработчика диалога, там тоже глюк бывает такой
Здравствуйте, FlashBack, Вы писали:
FB>Здравствуйте, Green_B, Вы писали:
G_B>>Да нет — дело в том, что я пишу прогу работая в ХР, так вот, если в свойствах файла я ставлю совместимость с Win98 или другой виндой, то он работает, если же нет, то не может создать окно. Потом я перенес экзешник на комп с 98 виндой, но там он тоже не смог создать окно. (кстати, я предложенный вариант тоже попробовал — не катит).
FB>Дело не в XP. Исспользуй MAKEINTRESOURCE , иначе получишь совершенно неизвестный результат. Так с памятью могут быть глюки.
FB>А если это не помагает, то переустанови окно.
FB>Кстати, нет ли у тебя там Common Controls в твоём диалоге?
FB>P.S. Пришли код обработчика диалога, там тоже глюк бывает такой
Вот обработчик для диалогано дело в том, что я запустил прогу под 2000 виндой и все заработало, а в ХР, чтобы она запустилась — нужнео ставить флажок совместимости с другими виндами!! Теперь попробую в 98ой, но по-моему он требует какую-то ДЛЛ АПИ, что касается комон контрол — есть — что-то вроде SysListView32)
P>(проблему unicode думется мы в данном контексте не рассматриваем)
А у меня с LPSTR глюки, а с MAIKEINTRESOURCE всё ок FB>>А если это не помагает, то переустанови окно.
P>А что значит "переустанови окно"?
Windows в смысле
[]
FB>А у меня с LPSTR глюки, а с MAIKEINTRESOURCE всё ок
Дело в том, что MAIKEINTRESOURCE ничего магического не делает. Просто приводит младшее слово к char*. И ежели id контрола у него не более 65535, то результат будет одинаковым. Т.е. проблемы у автора совсем даже не в MAIKEINTRESOURCE.
FB>>>А если это не помагает, то переустанови окно.
P>>А что значит "переустанови окно"?
FB>Windows в смысле
Здравствуйте, Green_B, Вы писали:
G_B>Народ! G_B>Хелп! Создаю я значит прогу под ХР и главным окном делаю диалог из ресурсов функцией CreateDialog, но оно почему-то не создается. Может кто скажет почему, может потому, что не регистрирую класс? Если да, то как для диалога зарегистрировать класс? Заранее спасибо!!!
Тут уже говорили, а тему не развили (почему-то). Итак, у тебя там listview? А где InitCommonControls[Ex]?
Здравствуйте, RS, Вы писали:
RS>Здравствуйте, Green_B, Вы писали:
G_B>>Народ! G_B>>Хелп! Создаю я значит прогу под ХР и главным окном делаю диалог из ресурсов функцией CreateDialog, но оно почему-то не создается. Может кто скажет почему, может потому, что не регистрирую класс? Если да, то как для диалога зарегистрировать класс? Заранее спасибо!!!
RS>Тут уже говорили, а тему не развили (почему-то). Итак, у тебя там listview? А где InitCommonControls[Ex]?
А нельзя ли поподробнее — где вызывается эта функция и как?
Я тут быстренько заглянул в Хелп — она там вообще без параметров!!!
Здравствуйте, Green_B, Вы писали:
G_B>А нельзя ли поподробнее — где вызывается эта функция и как? G_B>Я тут быстренько заглянул в Хелп — она там вообще без параметров!!!
и это правильно. а всетаки GetLastError после ошибки что возвращает?
Здравствуйте, Green_B, Вы писали:
RS>>Тут уже говорили, а тему не развили (почему-то). Итак, у тебя там listview? А где InitCommonControls[Ex]?
G_B>А нельзя ли поподробнее — где вызывается эта функция и как? G_B>Я тут быстренько заглянул в Хелп — она там вообще без параметров!!!
Это такая полезная функция, которую нужно вызывать перед явным (сам создаёшь) или неявным (на диалогах) продвинутых контролов (список, дерево, ..) Но если ты её не вызываешь, то странно, что неработает только в XP. Должно неработать вообще...
Здравствуйте, IPv6, Вы писали:
IP>Здравствуйте, Green_B, Вы писали:
G_B>>А нельзя ли поподробнее — где вызывается эта функция и как? G_B>>Я тут быстренько заглянул в Хелп — она там вообще без параметров!!!
IP>и это правильно. а всетаки GetLastError после ошибки что возвращает?
Еще не проверял — как узнаю — напишу. За зачетной неделей некогда и делом занятся.