Re: gui-приложение на С
gtk+ типа
программки на С, потом запускаю bat-файл, он мне из cpp делает
exe. Я хочу использовать win api!
начни с прочтения книжек. Например, в книгах по MSVC для чайников часто приводят полные листинги. Скажем, вспоминаются два тома "Библиотеки программиста", посвященные программингу на С под WinNT.
Вот простейшее приложение: (из MSDN)
#include <windows.h>А ещё есть сайтик http://firststeps.ru/ там слева есть про WinAPI
// Global variable
HINSTANCE hinst;
// Function prototypes.
int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int);
InitApplication(HINSTANCE);
InitInstance(HINSTANCE, int);
LRESULT CALLBACK MainWndProc(HWND, UINT, WPARAM, LPARAM);
// Application entry point.
int WINAPI WinMain(HINSTANCE hinstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow)
{
MSG msg;
if (!InitApplication(hinstance
return FALSE;
if (!InitInstance(hinstance, nCmdShow
return FALSE;
BOOL fGotMessage;
while fGotMessage = GetMessage(&msg, (HWND) NULL, 0, 0 != 0 && fGotMessage != -1)
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
UNREFERENCED_PARAMETER(lpCmdLine);
}
BOOL InitApplication(HINSTANCE hinstance)
{
WNDCLASSEX wcx;
// Fill in the window class structure with parameters
// that describe the main window.
wcx.cbSize = sizeof(wcx); // size of structure
wcx.style = CS_HREDRAW |
CS_VREDRAW; // redraw if size changes
wcx.lpfnWndProc = MainWndProc; // points to window procedure
wcx.cbClsExtra = 0; // no extra class memory
wcx.cbWndExtra = 0; // no extra window memory
wcx.hInstance = hinstance; // handle to instance
wcx.hIcon = LoadIcon(NULL,
IDI_APPLICATION); // predefined app. icon
wcx.hCursor = LoadCursor(NULL,
IDC_ARROW); // predefined arrow
wcx.hbrBackground = GetStockObject(
WHITE_BRUSH); // white background brush
wcx.lpszMenuName = "MainMenu"; // name of menu resource
wcx.lpszClassName = "MainWClass"; // name of window class
wcx.hIconSm = LoadImage(hinstance, // small class icon
MAKEINTRESOURCE(5
IMAGE_ICON,
GetSystemMetrics(SM_CXSMICON
GetSystemMetrics(SM_CYSMICON
LR_DEFAULTCOLOR);
// Register the window class.
return RegisterClassEx(&wcx);
}
BOOL InitInstance(HINSTANCE hinstance, int nCmdShow)
{
HWND hwnd;
// Save the application-instance handle.
hinst = hinstance;
// Create the main window.
hwnd = CreateWindow(
"MainWClass", // name of window class
"Sample", // title-bar string
WS_OVERLAPPEDWINDOW, // top-level window
CW_USEDEFAULT, // default horizontal position
CW_USEDEFAULT, // default vertical position
CW_USEDEFAULT, // default width
CW_USEDEFAULT, // default height
(HWND) NULL, // no owner window
(HMENU) NULL, // use class menu
hinstance, // handle to application instance
(LPVOID) NULL); // no window-creation data
if (!hwnd)
return FALSE;
// Show the window and send a WM_PAINT message to the window
// procedure.
ShowWindow(hwnd, nCmdShow);
UpdateWindow(hwnd);
return TRUE;
}
return msg.wParam;А это что за запись? (Исходя из того, что в Си классов вроде как нет)
спасибо, поржал перед сном.
Это структура. Они в Си есть.
p.s. Рад, что дал кому-то возможность "поржать". Но я не считаю зазорным ни чего-то не знать, ни задавать вопросы, если не знаешь.
У меня есть блокнот, я там могу писатьИ эти люди потом придут на собеседование и скажут, что владеют Си профессионально...
программки на С, потом запускаю bat-файл, он мне из cpp делает
exe
И эти люди потом придут на собеседование и скажут, что владеют Си профессионально...ты ведь этого не знаешь, зачем наговаривать?
ты ведь этого не знаешь, зачем наговаривать?Лучше бы не знал, да...
А MainWndProc ты куда дел? Такая программа просто не скомпилится.
И эти люди потом придут на собеседование и скажут, что владеют Си профессионально...а что в этом страшного?
а что в этом страшного?а что в этом хорошего? ни себе: ни людям...
ни себе: ни людям...это вообще к чему?
это вообще к чему?к тому, что человек неизвестно чегму учится, неизвестно зачем.
2, Хоть бы проверил что пример рабочий. Ведь правда оконной процедуры то нет.
что ты куришь?!
Ведь правда оконной процедуры то нет.Омагат! Какой ужас, как я посмел понадеяться на милых MSDNщиков!..
Для тех, кому этот пример нужен, можно для начала использовать DefWindowProc вместо своей - как-то работать будет.
Или заполнить шаблончик из MSDN:
LRESULT CALLBACK MainWndProc(
HWND hwnd, // handle to window
UINT uMsg, // message identifier
WPARAM wParam, // first message parameter
LPARAM lParam) // second message parameter
{
switch (uMsg)
{
case WM_CREATE:
// Initialize the window.
return 0;
case WM_PAINT:
// Paint the window's client area.
return 0;
case WM_SIZE:
// Set the size and position of the window.
return 0;
case WM_DESTROY:
// Clean up window-specific data objects.
return 0;
//
// Process other messages.
//
default:
return DefWindowProc(hwnd, uMsg, wParam, lParam);
}
return 0;
}
А ты родился со знанием С? Или все-таки тоже с чего-то начинал?У меня есть блокнот, я там могу писатьИ эти люди потом придут на собеседование и скажут, что владеют Си профессионально...
программки на С, потом запускаю bat-файл, он мне из cpp делает
exe
А ты родился со знанием С? Или все-таки тоже с чего-то начинал?он к тому, что при комерческих разработках это никому нафиг не нужно.
при комерческих разработкахгы, а что кроме коммерческих, разработок не бывает ?
он к тому, что при комерческих разработках это никому нафиг не нужно.Нет, это нафиг не нужно ни в промышленном программировании, ни в художественном.
WinAPI — это хоть местами и прикольная штука, но вовсе не основа программирования. К тому же она не нужна сейчас, в 2007 году.
Проблема в том, что новички не знают "что изучать", вот что страшно. Они изучают Сишарп, а потом спрашивают почему им мало платят. Они изучают MFC и WinAPI, а потом не понимают, почему их знание C++ оценивают на тройку. Они не понимают, что C++ — это не "Си с классами". Наконец, они не понимают почему документация по STL — это не msdn.
гы, а что кроме коммерческих, разработок не бывает ?А ты считаешь WinAPI — художественной штукой?
Единственное применение WinAPI в 2007 году я вижу только в допиливании wine. Это не мертвая платформа, поэтому нельзя сказать, что её изучение — работа историка. Такое как изучение ассемблера Спектрума. Писать для спектрума — да, художественное программирование. Писать под винду с использованием WinAPI будет историческим художественным через 10 лет. Сейчас — нет, и вот почему.
Ещё живы те, кто на нём (WinAPI) продолжает писать. Прежде всего по привычке, потому что не хочется переучиваться. Потом — старые проекты проще поддерживать пока они нужны. Разрабатывать новое на WinAPI в 2007 — это зло.
А теперь посмотрите с чего начинает человек. Это его первый шаг в профессию! Пока он выучится основам — наступит 2009 год, и вот тогда-то он с WinAPI просто не найдёт работу.
а нафига гуи писать на с? даже не с++ с классами, и мфц( атл) к примеру... Объясните ? я просто не в курсе...
а нафига гуи писать на ссмотря кто заказчик.
Пример 1. Заказчик КЮБ. no comment.
Пример 2. Мега-секретная разработка системы реального времени для военных под ОС на их машинах. Тут конечно спорно, но попробуй их убедить принять код на C++ или на питоне, допустим...
думаю плюсового компилятора или интерпретатора питона даже не найдется.
Вероятно, если _самому_ разобраться и понять, то реально и GTK-шную прогу КЮБу сдать.
зато в МСВС-3.0 вроде даже уже и ядро 2.6 и компилятор что-то около 4.0
хотя её никто живьём не видел, только на конференциях похваляются
Семантика C относительно "проста", в сравнении с процедурными высокоуровневыми ЯП. Если предположить, что реализация ядра и X window в МСВС "доверенная", то вряд ли при написании мега-секретной системы военные предпочтут высокоуровневые языки типа python и тому подобные языку с простой семантикой, ибо "хрен его знает, как оно работает и вообще, может Г. Россум — агент ЦРУ — встроил закладки в интерпретатор питона".
А зачем вообще учить C++, чувак?
Пример 1. Заказчик КЮБ. no comment.
Я общался с КЮБ, и сдавал ему жесткий плюсовый код. Он принял, правда сначала не поверил что я написал. После минуты разговора он мне поставил максимальный балл. Сложилось впечатление о том, что КЮБ — очень адекватный преподаватель, причем с широким кругозором.
Если у тебя были с ним проблемы — ты просто плохой программист.
А зачем вообще учить C++, чувак?Это промышленный стандарт. Я с трудом представляю грамотного специалиста в области разработки ПО без знаний плюсов. Опять же, из знаний плюсов вовсе не следует адекватность чела, тут комплекс знаний, навыков и опыта.
"хрен его знает, как оно работает и вообще, может Г. Россум — агент ЦРУ — встроил закладки в интерпретатор питона"
У тебя о спецслужбах представление как о отсталых мудаках, которые якобы не в состоянии Питон освоить.
Есть необходимость — Питон будет, нет необходимости — Питона не будет. Не надо разводить зоопарк языков без особой необходимости.
Полностью аналогичные ощущения от общения с КЮБ.
Я с трудом представляю грамотного специалиста в области разработки ПО без знаний плюсов.Это твои половые проблемы, чуве.
Это твои половые проблемы, чуве.Чтобы ответить на такую реплику хотелось бы иметь представление о тебе. У тебя есть страничка в "моём круге", любой другой социалке или может у тебя есть просто страничка с резюме? Просто так спорить смысла нет, согласись?
На реплику не обязательно отвечать, я не требую
Если у тебя были с ним проблемы — ты просто плохой программист.бугага
кто тебе сказал, что у меня с ним были какие-то проблемы ?
У тебя о спецслужбах представление как о отсталых мудаках, которые якобы не в состоянии Питон освоить.ну да, офигенно продвинутые чуваки — в МСВС до сих пор используется gcc 2.95 и ядро ветки 2.0
Они не в состоянии освоить не то что, Питон, математические модели ролевого разграничения доступа.
Они не в состоянии освоить не то что, Питон, математические модели ролевого разграничения доступа.Я не буду спорить, потому что мало знаю о том, что там. Думаю, что ты тоже.
По поводу Богачева — в твоем посте был намек о его некомпетентности. Я тебя расстрою, Ьогачев — очень здравый и рассудительный. Уже хотя бы то, что на мехмате нет винды — огромный плюс.
Проблемы в том, чтобы перелопатить ворох кода.
согласись - "научиться писать на С" и "сделать компилятор языка С" слегка разные задачи. Вместо "сделать компилятор" можно поставить "проанализировать существующий компилятор"
Какое было, такое и взяли. AFAIK 2.2.24
ты можешь на себя взять всю ответственность, что ядро ветки 2.6.хх лишено багов?
или любая из существующих софтин безопасна?
а вот про МСВС утверждается, что в соответствии с разработанной моделью она вполне безопасна.
согласись - "научиться писать на С" и "сделать компилятор языка С" слегка разные задачи. Вместо "сделать компилятор" можно поставить "проанализировать существующий компилятор"Согласен Вторая задача намного сложнее. Поэтому и нужно слать нах "жесткие плюсы" пианиста.
Поэтому и нужно слать нах "жесткие плюсы" пианиста.Я пишу в разных стилях, это вовсе не означает, что я пишу только на жестких плюсах.
Вообще, надо уметь приспосабливаться к чужому коду, и писать так, чтобы было в стиле первого автора.
Я тебя расстрою, Ьогачев — очень здравый и рассудительныйсразу вспоминается дрочка на коэффициенты распараллеливания матричных алгоритмов
Я пишу в разных стилях, это вовсе не означает, что я пишу только на жестких плюсах.тут согласен на 100%
Вообще, надо уметь приспосабливаться к чужому коду, и писать так, чтобы было в стиле первого автора.
а на чем пишут гуи отцы плюсов?
а на чем пишут гуи отцы плюсов?Я не специалист по гуям, но сейчас если писать — надо писать кроссплатформенно. Платформозависимая гуя — это плохо.
это правильно. поэтому самый гуёвый гуй - это веб-интерфейс.
самый гуёвый гуй - это веб-интерфейс.А что, больше не на чем писать кросс-платформенные гуи?
это не всегда совместимо с кросплатформенностью
это не всегда совместимо с кросплатформенностью+1, гном не под всеми платформами есть
Оставить комментарий
ka19
Народ, подскажите новичку, с чего начать?Только не спрашивайте, зачем мне это нужно!
Просто хочется сделать маленькое окошко с надписью
а там ещё кнопочку ок и повесить на неё что-нибудь!
Именно С!)