| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > Помогите разобраться...... |
| Автор: witeman 6.8.2005, 22:32 |
| В одной из сред разработки, которой я пользуюсь (Dev-С++), возможно воспользоваться шаблонами, один из которых "Windows Application". Создав следующий проект, я получаю следующий исходник : #include <windows.h> /* Declare Windows procedure */ LRESULT CALLBACK WindowProcedure (HWND, UINT, WPARAM, LPARAM); /* Make the class name into a global variable */ char szClassName[ ] = "WindowsApp"; int WINAPI WinMain (HINSTANCE hThisInstance, HINSTANCE hPrevInstance, LPSTR lpszArgument, int nFunsterStil) { HWND hwnd; /* This is the handle for our window */ MSG messages; /* Here messages to the application are saved */ WNDCLASSEX wincl; /* Data structure for the windowclass */ /* The Window structure */ wincl.hInstance = hThisInstance; wincl.lpszClassName = szClassName; wincl.lpfnWndProc = WindowProcedure; /* This function is called by windows */ wincl.style = CS_DBLCLKS; /* Catch double-clicks */ wincl.cbSize = sizeof (WNDCLASSEX); /* Use default icon and mouse-pointer */ wincl.hIcon = LoadIcon (NULL, IDI_APPLICATION); wincl.hIconSm = LoadIcon (NULL, IDI_APPLICATION); wincl.hCursor = LoadCursor (NULL, IDC_ARROW); wincl.lpszMenuName = NULL; /* No menu */ wincl.cbClsExtra = 0; /* No extra bytes after the window class */ wincl.cbWndExtra = 0; /* structure or the window instance */ /* Use Windows's default color as the background of the window */ wincl.hbrBackground = (HBRUSH) COLOR_BACKGROUND; /* Register the window class, and if it fails quit the program */ if (!RegisterClassEx (&wincl)) return 0; /* The class is registered, let's create the program*/ hwnd = CreateWindowEx ( 0, /* Extended possibilites for variation */ szClassName, /* Classname */ "Application", /* Title Text */ WS_OVERLAPPEDWINDOW, /* default window */ CW_USEDEFAULT, /* Windows decides the position */ CW_USEDEFAULT, /* where the window ends up on the screen */ 200, /* The programs width */ 200, /* and height in pixels */ HWND_DESKTOP, /* The window is a child-window to desktop */ NULL, /* No menu */ hThisInstance, /* Program Instance handler */ NULL /* No Window Creation data */ ); /* Make the window visible on the screen */ ShowWindow (hwnd, nFunsterStil); /* Run the message loop. It will run until GetMessage() returns 0 */ while (GetMessage (&messages, NULL, 0, 0)) { /* Translate virtual-key messages into character messages */ TranslateMessage(&messages); /* Send message to WindowProcedure */ DispatchMessage(&messages); } /* The program return-value is 0 - The value that PostQuitMessage() gave */ return messages.wParam; } /* This function is called by the Windows function DispatchMessage() */ LRESULT CALLBACK WindowProcedure (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) { switch (message) /* handle the messages */ { case WM_DESTROY: PostQuitMessage (0); /* send a WM_QUIT to the message queue */ break; default: /* for messages that we don't deal with */ return DefWindowProc (hwnd, message, wParam, lParam); } return 0; } Меня это одновременно и удивило и обрадовало. С одной стороны это был практически непонятный исходный код (некоторые вещи мне всё-таки были понятны. свойственные "чистому С++"), ведь обычно я пользуюсь средой C++ Buider, в которой иной подход к созданию приложений. А с другой стороны "вес" этого приложения был значительно меньше его "Борландского собрата" всего лишь 95,3КБ(!) по сравнению с 440 КБ. Так вот ,собственно, в чём мой вопрос: подскажите мне материаллы по данной теме или сами объясните что к чему. Заранее неимоверно блпгодарен :-). |
| Автор: Fixin 6.8.2005, 22:40 | ||||
|
| Автор: TheBoss 7.8.2005, 15:35 |
| Почитай http://web-faq.ru/showscript.php?view=c_teach. У него вполне все доступно описано. |
| Автор: mr.Anderson 8.8.2005, 18:01 |
| Ничего себе, доступно! |
| Автор: WERITAS 8.8.2005, 18:16 |
| А уж объем кода вообще меня убил Угу, и мя тоже |
| Автор: mr.Anderson 8.8.2005, 18:21 | ||
Ну, и я о том. Это ж кошмар - по Румянцеву, чтобы вывести сообщение в окне "Hello world", надо написать в два раза больше, чем в первом посте этой темы. И написано:
Ха-ха! Три раза! В Борланде для этого надо только проект создать и скомпайлить его. |
| Автор: Дрон 8.8.2005, 18:23 | ||
И это нормально. А вообще: НЕ ФЛЕЙМИМ! |
| Автор: mr.Anderson 8.8.2005, 18:34 | ||
Что нормально? Этот код - это нормально?! Да вы что! Столько писать ради простого сообщения, а сколько понадобится для большой программы?! |
| Автор: Дрон 8.8.2005, 18:37 | ||
А что делать? Зато получаешь полный контроль над работой программы. И кстати, вся эта куча кода в основном для создания окна. Текст выводится, скорее всего, одной командой TextOut. |
| Автор: mr.Anderson 8.8.2005, 18:44 | ||
О чем и разговор. Лучше через Билдер - вообще никакой возни не надо. Создал форму, скомпилил - и готово! И все есть. Безо всякой фигни на две страницы. |
| Автор: Дрон 8.8.2005, 18:51 | ||
sim7
Смотря какова цель. Но здесь я чувствую, объяснять что-то бесполезно. В общем, ещё одно высказывание здесь в таком же духе -- получишь минус за флейм. |
| Автор: witeman 8.8.2005, 19:52 |
| Спасибо всем вам ребята, вы мне сильно помогли разобраться с этой емой всем очень благодарен |