|
gui-приложение на С
06.12.2007 00:16
|
|
|
Народ, подскажите новичку, с чего начать? Только не спрашивайте, зачем мне это нужно! Просто хочется сделать маленькое окошко с надписью а там еще кнопочку ок и повесить на нее что-нибудь! Именно С!)
|
|
gadfather
|
Carpal Tunnel
|
|
|
|
Рег.: 05.11.2003
|
Сообщений: 47302
|
Из: пл. Гагарина
|
Рейтинг: 16961
|
|
|
ну эта gtk+ типа
|
You can't always get what you want |
|
|
|
А можно поподробнее? У меня есть блокнот, я там могу писать программки на С, потом запускаю bat-файл, он мне из cpp делает exe. Я хочу использовать win api!
|
|
Midori
|
kaiafa
|
|
|
|
Рег.: 29.05.2007
|
Сообщений: 5181
|
Из: Strasbourg
|
Рейтинг: 3151
|
|
|
начни с прочтения книжек. Например, в книгах по MSVC для чайников часто приводят полные листинги. Скажем, вспоминаются два тома "Библиотеки программиста", посвященные программингу на С под WinNT.
|
Кручусь, как белка в мясорубке |
|
Yorik
|
|
|
|
|
Рег.: 01.09.2005
|
Сообщений: 2476
|
Из: Москва
|
Рейтинг: 633
|
|
|
Все простою  Вот простейшее приложение: (из MSDN) code: #include <windows.h>
// 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;
}
А еще есть сайтик http://firststeps.ru/ там слева есть про WinAPI
|
|
v743
|
Carpal Tunnel
|
|
|
|
Рег.: 25.10.2002
|
Сообщений: 7714
|
|
Рейтинг: 98
|
|
Re: gui-приложение на С
[re: Yorik]
06.12.2007 01:40
|
|
|
В ответ на:
return msg.wParam;
А это что за запись? (Исходя из того, что в Си классов вроде как нет)
|
К 743-ей комнате сектора "В" не имею никакого отношения. |
|
Leo
|
|
|
|
|
Рег.: 06.12.2002
|
Сообщений: 4547
|
Из: 51.5252 N, 0.1322 W
|
Рейтинг: 548
|
|
Re: gui-приложение на С
[re: v743]
06.12.2007 01:41
|
|
|
спасибо, поржал перед сном.
|
// Leo |
|
Sharp
|
wayfarer
|
|
|
|
Рег.: 02.12.2004
|
Сообщений: 1021
|
|
Рейтинг: 21
|
|
Re: gui-приложение на С
[re: v743]
06.12.2007 08:32
|
|
|
Это структура. Они в Си есть.
|
|
v743
|
Carpal Tunnel
|
|
|
|
Рег.: 25.10.2002
|
Сообщений: 7714
|
|
Рейтинг: 98
|
|
Re: gui-приложение на С
[re: Sharp]
06.12.2007 09:28
|
|
|
Ясно, спасибо.
p.s. Рад, что дал кому-то возможность "поржать". Но я не считаю зазорным ни чего-то не знать, ни задавать вопросы, если не знаешь.
|
К 743-ей комнате сектора "В" не имею никакого отношения. |
|
pianist
|
аццкий
|
|
|
|
Рег.: 25.10.2002
|
Сообщений: 10841
|
Из: ---
|
Рейтинг: 7701
|
|
|
Quote:
У меня есть блокнот, я там могу писать программки на С, потом запускаю bat-файл, он мне из cpp делает exe
И эти люди потом придут на собеседование и скажут, что владеют Си профессионально...
|
Убей в себе государство!!1 |
|
FMX
|
Математег
|
|
|
|
Рег.: 29.05.2006
|
Сообщений: 3744
|
|
Рейтинг: 1502
|
|
|
В ответ на:
И эти люди потом придут на собеседование и скажут, что владеют Си профессионально...
ты ведь этого не знаешь, зачем наговаривать? 
|
|
pianist
|
аццкий
|
|
|
|
Рег.: 25.10.2002
|
Сообщений: 10841
|
Из: ---
|
Рейтинг: 7701
|
|
Re: gui-приложение на С
[re: FMX]
06.12.2007 11:22
|
|
|
Quote:
ты ведь этого не знаешь, зачем наговаривать? 
Лучше бы не знал, да...
|
Убей в себе государство!!1 |
|
halyavin
|
кфмн
|
|
|
|
Рег.: 14.12.2005
|
Сообщений: 916
|
Из: Moscow
|
Рейтинг: 622
|
|
Re: gui-приложение на С
[re: Yorik]
06.12.2007 11:41
|
|
|
А MainWndProc ты куда дел? Такая программа просто не скомпилится.
|
|
Ildar
|
sir
|
|
|
|
Рег.: 01.09.2003
|
Сообщений: 1286
|
Из: не гз
|
Рейтинг: 9
|
|
|
В ответ на:
И эти люди потом придут на собеседование и скажут, что владеют Си профессионально... 
а что в этом страшного?
|
|
pianist
|
аццкий
|
|
|
|
Рег.: 25.10.2002
|
Сообщений: 10841
|
Из: ---
|
Рейтинг: 7701
|
|
Re: gui-приложение на С
[re: Ildar]
06.12.2007 12:17
|
|
|
Quote:
а что в этом страшного?
а что в этом хорошего? ни себе: ни людям...
|
Убей в себе государство!!1 |
|
Ildar
|
sir
|
|
|
|
Рег.: 01.09.2003
|
Сообщений: 1286
|
Из: не гз
|
Рейтинг: 9
|
|
|
В ответ на:
ни себе: ни людям...
это вообще к чему?
|
|
pianist
|
аццкий
|
|
|
|
Рег.: 25.10.2002
|
Сообщений: 10841
|
Из: ---
|
Рейтинг: 7701
|
|
Re: gui-приложение на С
[re: Ildar]
06.12.2007 12:31
|
|
|
Quote:
это вообще к чему?
к тому, что человек неизвестно чегму учится, неизвестно зачем.
|
Убей в себе государство!!1 |
|
Zoobastik
|
Комок меха
|
|
|
|
Рег.: 18.10.2003
|
Сообщений: 7460
|
Из: За спиной
|
Рейтинг: 4347
|
|
Re: gui-приложение на С
[re: Yorik]
06.12.2007 13:18
|
|
|
2Yorik, Хоть бы проверил что пример рабочий. Ведь правда оконной процедуры то нет.
|
|
Ildar
|
sir
|
|
|
|
Рег.: 01.09.2003
|
Сообщений: 1286
|
Из: не гз
|
Рейтинг: 9
|
|
|
|
Yorik
|
|
|
|
|
Рег.: 01.09.2005
|
Сообщений: 2476
|
Из: Москва
|
Рейтинг: 633
|
|
|
В ответ на:
Ведь правда оконной процедуры то нет.
Омагат! Какой ужас, как я посмел понадеяться на милых MSDNщиков!..  Для тех, кому этот пример нужен, можно для начала использовать DefWindowProc вместо своей - как-то работать будет. Или заполнить шаблончик из MSDN: code: 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;
}
|
|