WinAPI: вопрос
Дан WindowProc:
LRESULT CALLBACK WindowProc (HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) {
switch (uMsg) {
case WM_CLOSE: {
DestroyWindow (hWnd);
return 0;
}
case WM_DESTROY: {
PostQuitMessage (0);
return 0;
}
default:
return DefWindowProc (hWnd, uMsg, wParam, lParam);
}
}
Не работает: при клике по крестику окно закрывается, а приложение — нет. Причем с F4 проверял, что WM_DESTROY приходит, PostQuitMessage вызывается, но WM_QUIT в очередь сообщений не запихивает; во всяком случае, GetMessage не возвращает 0, а должен при наличии WM_QUIT в очереди. Ведь блин, на экзамене по Windows писал всё так же, все работало, 5 получил даже! А тут — не хочет. Никто не сталкивался? Может проблема ваще не в WindowProc?
P. S. Кстати, гавно этот ваш Си, сколько на нём пишу, столько раз убеждаюсь. Ну как может прога, влезающая в один экран, на 3 ГГц компе компилироваться 5 секунд? Это бред.
Update. Пользы от вас никакой, нет бы дело написать, так вы Си защищаете... Без вас починил. Оказывается в WinMain надо писать не while (GetMessage (&msg, hWnd, 0, 0), а while (GetMessage (&msg, NULL, 0, 0). Логики в этом нет, зато работает.
C# — рулит
Ага, и скорость компиляции это, конечно же, особенность языка, а не компилятора:ь
Да, это особенность языка. Все компиляторы Си, которые я видел работают в 10 раз медленней любых компиляторов Паскаля. А все дело в тупых h-файлах, которые перекомпилировываются заново каждый раз. Это идиотизм, бред, чушь. В Builder’е добавляет радости еще и тот факт, что если просто нажать F9 то с вероятностью 80% он не будет компилировать прогу заново, а запустит старую, уже готовую exe-шку. Действительно, фигли напрягаться.
Ох, сколько лишних эмоций-то... Да, медленно, да. И что? Не в этом недостаток языка, а предкомпиляцию сейчас все поддерживают, давно уж.
Совет простой — не нравится — не пиши, есть куча языков, в которых эта проблема решена. Java быстрее компилируется. А если нужно, то надо бы выяснять, а не кипятиться. :) Язык-то на самом деле хороший, старый просто, рассчитанный не на то.
Илья, для того, чтобы не совершать подобных ошибок и придумали умные люди MSDN! А ваще лучше PHP человечество ещё ничего не придумало (С во всех его проявлениях с достоинством занимает 2-ю строчку в моих предпочтениях)!
А вот Александр, которой перед тобой комментировал, считает, что Java лучше, чем PHP. Я в следующем семестре буду иметь возможность убедиться в этом/в противном.
А Си — сосёт. Что бы кто не говорил. Напишу как-нибудь полностью, почему именно.
Изучать (во ВСЁМ Смысле этого слова) не пробовали (кроме того, чтобы просто учить и использовать)?
Че?
Java — это круто, но для опеределённых программ. РНР лучше тем, что он универсален для всего, поэтому он мне и нравится.
Си, конечно, уважаем мною, т. к. это первый язык программирования, который я выучила и на нём написано мною очень много, но последнее время убеждаюсь, что все его модификации (имеются в виду Builder или Visual C) сосут по полной программе. В них же работать невозможно! В данном случае (если уж так необходимы проги на подобных языках) лучше Delphi нет ничего.
Вот такое вот моё личное IMHO! [смайлик]