Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
Baz
Зарегистрирован: 23.04.2002 Сообщения: 29
|
Добавлено: Пн Май 20 2002 07:47 Заголовок сообщения: Программирование на С++ |
|
|
Только начинаю программировать на С. Установлен Borland C++ Builder 5.0 Почти точно списал из книги код программы. Почему он не работает (не регистрируется класс)? Может, я чего-то базового не знаю про отладчик, компилятор и т.д.? Вот код целиком:
#include #include
LRESULT CALLBACK WndProc(HWND, UINT, UINT, LONG);
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpszCmdParam, int nCmdShow) { HWND hWnd; WNDCLASS WndClass;//the name of structure of our class information MSG Msg;//the name of structure to describe a message char szClassName[]="Hello, world!";//the name of our class
//FILLING THE FIELDS OF THE STRUCTURE WndClass.style=CS_HREDRAW|CS_VREDRAW;//the style of the class WndClass.lpfnWndProc=WndProc;//callback procedure of the class WndClass.lpszClassName="Hello, World!";//the name of the class WndClass.hInstance=hInstance;//the handl of our application
//REGISTERING OF OUR CLASS if (!RegisterClass(&WndClass)) {MessageBox(NULL,"Can't register the class", "ERROR", MB_ICONEXCLAMATION); return 0; }
//CREATING THE WINDOW hWnd=CreateWindowEx(WS_EX_OVERLAPPEDWINDOW,szClassName, "MY_PROGRAM",WS_OVERLAPPEDWINDOW,0,0,100,100, NULL,NULL,hInstance,NULL); if (hWnd==NULL) {MessageBox(NULL,"CAN'T CREATE THE WINDOW", "ERROR",MB_ICONEXCLAMATION); return 0; }
//SHOW OUR WINDOW ShowWindow(hWnd,nCmdShow); UpdateWindow(hWnd);
//BEGINNING THE MESSAGE CYCLE while (GetMessage(&Msg,NULL,0,0)) DispatchMessage(&Msg); return 0; }//End of WinMain
//=========================================================.. CALLBACK WndProc(HWND hWnd, UINT Message, WPARAM wParam, LPARAM lParam) { switch (Message) {case WM_DESTROY: PostQuitMessage(0); return 0; } return DefWindowProc(hWnd, Message, wParam, lParam); }//End of WndProc
Заранее спасибо, Baz. |
|
Вернуться к началу |
|
|
Roman_2002
Зарегистрирован: 21.05.2002 Сообщения: 56 Откуда: Львов
|
Добавлено: Пн Май 20 2002 10:12 Заголовок сообщения: Re: Программирование на С++ |
|
|
замени LRESULT CALLBACK WndProc(HWND, UINT, UINT, LONG)
long PASCAL WndProc(HWND, UINT, WPARAM, LPARAM ) и всё пойдет.
А вообще зачем тебе так создавать такие приложения? Не поще сразу браться к визуальному программированию? |
|
Вернуться к началу |
|
|
Baz
Зарегистрирован: 23.04.2002 Сообщения: 29
|
Добавлено: Вт Май 21 2002 05:10 Заголовок сообщения: Re: Программирование на С++ |
|
|
Во-первых, задание такое. Ну, а, во-вторых, мне и самому хочется поменьше от языка зависеть. А не затруднит добавить к ответу чуть-чуть комментариев? Я, в общем-то, уже по-другому сделал, но знать хочется ПОЧЕМУ не работает. В книжках же написано, что должно . |
|
Вернуться к началу |
|
|
Roman_2002
Зарегистрирован: 21.05.2002 Сообщения: 56 Откуда: Львов
|
Добавлено: Вт Май 21 2002 09:57 Заголовок сообщения: Re: Программирование на С++ |
|
|
Просто не сответсвиє типов. Насколько я знаю CALLBACK это тоже самое что far Pascal.
А если ты считаешь что в книгав все правильно, то глубоко ошибаешся! Там тьма глюков, особенно в дешевых и подозрительных издателей! Я когда начинал программировать сам на такие грабли не раз нарывался! |
|
Вернуться к началу |
|
|
Uraa Гость
|
Добавлено: Пт Июн 28 2002 02:44 Заголовок сообщения: Re: Программирование на С++ |
|
|
Крикун считает, что это С++? Ты вспомнил far, умерший вместе с 16-bit? Ты считаешь , что CALLBACK == pascal (а не stdcall)? Напиши еще чего-нибудь - приятно поболтать о давно ушедших временах. P.S. Я в курсах, что сейчас PASCAL == stdcall |
|
Вернуться к началу |
|
|
|