Вы создаете пустой windows проект (мы уже разбирали это для console-программы), добавляете туда модуль и помещаете то, что я написал. И все. |
vladislav у меня есть примеры очень простых програм, но они на визуал бэйсике вы мне поможите написать такиеже только на Си? |
Гость это я |
vladislav писал(а): Вы создаете пустой windows проект (мы уже разбирали это для console-программы), добавляете туда модуль и помещаете то, что я написал. И все.И нажимаете F5. Внимательно читаете все сообщения внизу, исправляете все очепятки. И в конце-концов в каталоге с проектом получаете полноценный exe-файл. (Правда не релиз, а билдовый) ![]() _________________ Скажи мне чей Крым, и я скажу кто ты. |
Кстати - смех смехом, а вопрос - с чего начать изучение языка, чтоб не потерять интерес - довольно сложен, ИМХО.
з.е. Процентов 50 наверное (если не больше) книг для начинающих, дальше одной-двух глав не читаются. _________________ Скажи мне чей Крым, и я скажу кто ты. |
Как сделать надпись по-русски. Я создал шаблон (диалоговое окно) с кнопками, на кнопках надписи по русски, когда откомпилировал стали по английски. Как их сделать по русски? |
Повидимому вы создали MFC проект. Бросьте пока этим заниматься и сделайте, что мы тут с вами обговариваем. |
Я компилирую ваш текст которвй вы мне дали он не компилируеться выдает ошибку. Я просто думаю для начинающего сложно сразу с АPI поэтому думал надо начинать с шаблона? Лчше с API всё самому прописывать?
В вашей книге написано: В данной главе мы дадим достаточно обширное введение в API-программы, так что читатель может в дальнейшем спокойно писать любые программы, без использования каких либо библиотек, чего ему мы категорически не рекомендуем, поскольку подобный изоляционизм значительно уменьшит его возможности как программиста. |
Уважаемый vilain, вы только начинаете, поэтому я вам и рекомендую делать именно так.
Еще раз говорю вам надо создать пустой windows проект. Возможно ошибки появились, если вы создали не пустой (а потом очистили) или не windows проект. Наконец ошибки тоже надо анализировать, в этом и заключается большая часть работы программиста. |
Я не могу сообразить напишите пожалуйста ещё раз как создать пустой Windows проект. Если есть возможность зайдите в чат там пообщаемся нормально |
На форуме я вам писал
Попробую. 1. Пункт меню File\New\Project (Visual Studio.NET, у меня версия 2003), но это почти тоже самое, что у вас. 2. В левом окне (Project Types) выбираем Visual C++ Projects. 3. В правом окне (Temlates) выбираем шаблон: Win32 Project. 4. В поле наме выбираем имя проекта. 5. В поле Location каталог, где будет находиться проект. 6. Нажимаем Ok. 7. В появившемся окне выбираем вкладку Application Settings. 6. Выбираем консольное приложение и пустой проект (Empty Project). Нажимаем Finish. 7. В результате получили пустой проект. 8. Далее View\Solution Explorer - менеджер проекта. 9. Щелкаем по Source Files правой кнопкой и выбираем Add New Items. 10. Выбираем C++File и его имя. 11. оказываемся в редакторе, где набираем программу. 12. Затем можно ее транслировать: Ctrl+Shift+B. Только взять надо не консольное, а Windows приложение. Вы, однако, не внимательны |
атас. думается дешевле для vladislav-а пригласить villain-а на пару частных уроков _________________ Ин дер гросен фамилие нихт клювен клац-клац ![]() |
Вот ура получилась спасибо. Я был очень внимательный и делал всё правельно, но у меня почемуто не получалась. Спасибо.
vladislav если есть возможность напишите пожалуйста ещё пару такихже простых программ. Можно ещё с кнопкой при нажатии на каторую что-нибуть происходит. Спасибо. |
У меня парочка вопросов:
1. vladislav писал(а): while (GetMessage(&msg, NULL, 0, 0))
{ //транслировать коды виртуальных клавиш в ASCII-коды TranslateMessage(&msg); //переправить сообщение процедуре окна DispatchMessage(&msg); } while(msg.message!=WM_QUIT) { GetMessage(&msg,NULL,0,0xFFFF); TranslateMessage(&msg); DispatchMessage(&msg); } В чем разница в работе вашего и моего цикла? 2. vladislav писал(а): LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) {
switch(message) { case WM_CREATE: break; case WM_DESTROY: PostQuitMessage(0); break; case WM_PAINT: break; default: return DefWindowProc(hWnd, message, wParam, lParam); } return 0; } А я пишу так: switch(message) { case WM_CREATE: {...} break; case WM_DESTROY: PostQuitMessage(0); return(0); case WM_PAINT: {...} break; } return DefWindowProc(hWnd, message, wParam, lParam); Тот же вопрос. Почему не следует вызывать DefWindowProc для сообщений, на которые мы решили как-то прореагировать? |
vladislav я хочу с вами посоветоваться. Для начинающего может мне сначала начать программировать на визуал бейсик, а потом перейти на Си? Или продолжать изучать Си и на нём программировать? |
Переходить не советую. Я надеюсь Вам не 50-лет и вас жизнь нисколько не торопит. Для овладения Visual C не жалко времени. |
vladislav вы бы не могли мне написать текст, который создаёт кнопку. Что бы его добавить к тексту, который вы мне давали и получилось окно с кнопкой, хотя бы что бы кнопка не выполняла ни каких функций. |
Да пожалуйста! Здесь даже две кнопки. Разбирайся наздоровье.
|
Спасибо буду разбираться. moishe можно спросить, а ты кто программист? Или тоже учишься программировать? |
По поводу цикла обработки сообщений. Да все равно как.
Что касается функции DefWindowProc, то честно говоря у меня нет данных, когда использование этой функции как то влияло на обработку сообщений. Просто я всегда писал по указанной схеме. Да, есть проблема с WM_CREATE. Здесь можно возвратить -1 и тогда окно будет разрушено. Вот что касается функции диалогового окна, то там иногда использование return 0 вместо return 1 может привести к некоторым нюансам (WM_INITDIALOG). Последний раз редактировалось: vladislav (2005.03.31 21:08.54), всего редактировалось 1 раз |
Ну да, в трудовой у меня это слово написано. |
vladislav я вам уже говорил что у меня есть простая программа, но она не на С++, а на VB вы мне поможете сделать типа такойже только на С++? Только тогда когда я разберусь с С++ и смогу сам составлять маленькии программы. Если можно я скину её вам по E-mail 'у? Вы посмотрите что за программа. Только её не я писал. |
Нет, в VB я разбираться не хочу. А вот на Си программировать помогу. |
Помогите найти ошибки
#include <windows.h> #include "resource.h" LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); BOOL CALLBACK DIALl(HWND, UINT, WPARAM, LPARAM); HINSTANCE hh; int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { char cname[]="Class"; char title[]="Наше первое окно"; MSG msg; //структура для регистрации класса окон WNDCLASS wc; wc.style = 0; wc.lpfnWndProc = (WNDPROC)WndProc; wc.cbClsExtra = 0; wc.cbWndExtra = 0; wc.hInstance = hInstance; wc.hIcon = LoadIcon(hInstance, (LPCTSTR)IDI_APPLICATION); wc.hCursor = LoadCursor(NULL, IDC_ARROW); wc.hbrBackground = (HBRUSH)(COLOR_WINDOW+15); wc.lpszMenuName = 0; wc.lpszClassName = cname; //регистрируем класс if(!RegisterClass(&wc)) return 0; //создать окно HWND hWnd = CreateWindow( cname, //класс title, //заголовок WS_OVERLAPPEDWINDOW, //стиль окна 0, //координата X 0, //координата Y 500, //ширина окна 300, //высота окна NULL, //дескриптор окна-родителя NULL, //дескриптор меню hInstance, //идентификатор приложения NULL); //указатель на структуру, посылаемую //по сообщению WM_CREATE //проверим, создалось ли окно if (!hWnd) return 0; //показать окно ShowWindow(hWnd, nCmdShow); //обновить содержимое окна UpdateWindow(hWnd); //цикл обработки сообщений while (GetMessage(&msg, NULL, 0, 0)) { //транслировать коды виртуальных клавиш в ASCII-коды TranslateMessage(&msg); //переправить сообщение процедуре окна DispatchMessage(&msg); } return 0; }; //процедура окна LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) { static HWND hb; switch(message) { // case WM_CREATE: // hb = CreateWindow( "BUTTON", "Выход", WS_CHILD|WS_VISIBLE, 10, 10, 60, 30, hWnd, NULL, hh, NULL ); break; // case WM_COMMAND: if((HWND)lParam==hb) { DialogBox(hh, (char *)IDD_DIALOGl, hWnd, DIALl); }; break; // case WM_DESTROY: // PostQuitMessage(0); break; // case WM_PAINT: // UpdateWindow(hb); break; // case WM_LBUTTONDOWN: // break; default: return DefWindowProc(hWnd, message, wParam, lParam); } return 0; } // BOOL CALLBACK DIALl(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) { switch(uMsg) { // case WM_INITDIALOG: break; // case WM_CLOSE: EndDialog(hwndDlg, 0); break; case WM_COMMAND: // if(LOWORD(wParam)==IDC_ BUTTON1) { EndDialog(hwndDlg, 0); }; break; }; return 0; } |
На первый взгляд: в WinMain не вижу строчки
hh=hInstance; Выложи resource.h и <имя_файла_программы>.rc, тогда точнее скажу. |
Почему тема не продолжаеться? |
villain писал(а): Почему тема не продолжаеться?продолжи - в чём проблема то, ты хоть читаешь, что пишут? _________________ Скажи мне чей Крым, и я скажу кто ты. |
Помогите найти _подробное_ (желательно даже полное) описание формата ресурс-скрипта (*.rc) на английском или русском языке! |
http://msdn.microsoft.com/library/en-us/vcresed/html/vcconWorkingWithResources.asp
http://msdn.microsoft.com/library/en-us/tools/tools/about_resource_files.asp _________________ Ин дер гросен фамилие нихт клювен клац-клац ![]() |
Спасибо. Первая ссылка - мимо, а вот вторая, вроде бы, как раз то, что надо. Попробую еще на Борланде порыться. |
|
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах Вы не можете вкладывать файлы Вы можете скачивать файлы |