| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Системное программирование и WinAPI > Window _ [] X |
| Автор: Гость_Alex 22.8.2005, 11:45 |
| Всем привет! Пытаюсь освоить основы WinAPI. И никак не могу догнать, как сделать свой стиль окна. Мне надо что бы оно не позволяло изменять размер и кнопочка навесь экран была неактивна. И где вообще можно почитать про это? Спасибо |
| Автор: Denn 22.8.2005, 14:37 |
| Петзольд. Программирование для Windows 95. |
| Автор: Гость_Alex 22.8.2005, 15:53 |
| Другими словами это не возможно? Или ты пытаешься мне сказать, что это WinAPI первобытный век. Если так то твоё мнение меня не интересует, хочу просто узнать ответ на свой вопрос |
| Автор: Denn 22.8.2005, 16:01 |
| Я ответил на вопрос где можно почитать. Для главного окна стили выставляются в WinMain при инициализации структуры WNDCLASS(EX), а для дочерних в Create(Ex), либо при наследовании дочерних окон. Кстати книжка чудная хоть и старая конечно. |
| Автор: Гость_Alex 22.8.2005, 19:57 |
| А можешь примерчик скинуть? |
| Автор: Denn 22.8.2005, 21:52 |
| У меня нету таковых - сам давно MFC юзаю. Можешь посмотреть на http://www.sources.ru/cpp/winapi/index.html, http://www.codeproject.com. И здесь можно http://softboard.ru/lofiversion/index.php/t18436.html. |
| Автор: Гость_Alex 23.8.2005, 00:28 |
| Спасибо А то куда не обратишься, все трыднят, что это старая тема и ничего не знают. Классный у вас тут форум! |
| Автор: rsm 23.8.2005, 09:36 | ||
Спокойствие, нетерпеливый пришелец!
|
| Автор: srd 23.8.2005, 10:01 | ||
| Небольшое замечание: функция ExitProcess() приводит к завершению приложения. Это API функция, которая ничего не знает о таких фичах языка Си++, как деструкторы и т.д. Вот пример:
Если расскоментировать строчку с вызовом ExitProcess(), то мы никогда не увидем message box. Вывод: НИКОГДА НЕ ИСПОЛЬЗУЙТЕ ЭТУ ФУНКЦИЮ В СВОЁМ КОДЕ. |
| Автор: rsm 23.8.2005, 14:06 | ||||
А кто сказал, что я пишу на С++?
Теоретически, можно было бы написать и return, чтобы просто выйти из функции обратно в дерби ОСи. Это вполне корректно работает в Вин2000. Но где гарантия, что оно же будет нормально работать в других Виндах? |
| Автор: Leksey 23.8.2005, 14:19 |
| rsm что-то я стобой не совсем согласен. Как раз return в main штука более универсальная и безопасная и работает не только в Windows любых версий, но и в Unix,Linux... |
| Автор: srd 23.8.2005, 14:20 | ||||
Очень часто код на Си и Си++ смешивается, и такое поведение Си-части сломает Си++ - часть. Собственно, это я и имел в виду.
Если имеется в виду return из точки входа (main()/WinMain()), то это будет работать на любой версии Винды. А гарантия - то, что твой компилятор а) является компилятором языка Си/Си++, для которого смысл инструкции return вполне определён б) предназначен для разработки Win32-приложений, вот и всё. |
| Автор: rsm 23.8.2005, 15:56 | ||||
В моей программе точка входа изменена, сделано это с целью экономии ресурсов - 2 Кб это лучше 9,5 Кб при использовании WinMain. В общем и целом я согласен и признаю вашу правоту относительно того, что для Си\С++ такой код будет не самым лучшим. Это все тлетворное влияние кодинга на Ассемблере, в котором при ошибке в балансе стэка по ret'у в конце программы вылетаешь чёрт-и куда, но только не куда надо. |