Logo Море(!) аналитической информации!
IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware
Архив форумов ЦИТФорума
Море(!) вопросов - Море(!) ответов
 
 FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 
Как правильно задавать вопросы

Гремучий winapi

 
Перейти:  
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Программирование
Предыдущая тема :: Следующая тема  
Автор Сообщение
Гость
Гость





СообщениеДобавлено: Ср Сен 22 2004 16:27    Заголовок сообщения: Гремучий winapi Ответить с цитатой

не работает следующий код на C++:

#include <windows.h>

HINSTANCE hin;

WINAPI WinMain(HINSTANCE hinstance, HINSTANCE prepinstance, LPSTR cmdline,int showcmd)
{
hin=hinstance;

WNDCLASSEX winex;
winex.cbClsExtra=sizeof(WNDCLASSEX);
winex.lpfnWndProc=DefWindowProc;
winex.hInstance=hin;
winex.lpszClassName="exclass";
return RegisterClassEx (&winex);

HWND winhandler=CreateWindowEx
(WS_EX_OVERLAPPEDWINDOW,"exclass","first win",WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, NULL, NULL, hin, NULL);

ShowWindow(winhandler,SW_SHOW);
return 0;
}

хотя запускается нормально - а вот окошка нету.
я уж совсем начинающий - сильно не пинайте.
Вернуться к началу
Sharkky



Зарегистрирован: 10.01.2004
Сообщения: 72

СообщениеДобавлено: Ср Сен 22 2004 19:01    Заголовок сообщения: Ответить с цитатой

Я бы попробовал всунуть UpdateWindow, после ShowWindow. А ещё полезно посмотреть чему равен handler окна.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Bad Lamer
Гость





СообщениеДобавлено: Ср Сен 22 2004 21:31    Заголовок сообщения: Ответить с цитатой

Да тут ( в коде) много чего не хватает: нет цикла обработки сообщений, нет процедуры окна... да и структура WNDCLASS не полностью заполнена (хотя конечно это не обязательно...).
А вот тут должна быть не DefWindowProc, а процедура окна:

winex.lpfnWndProc=DefWindowProc;

Вобщем привожу код минимального приложения...


#include <windows.h>

LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);

HINSTANCE hInst;
char szClassName[]="WindowAppClass";

/////////////////////////////////////////

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpszCmdLine, int nCmdShow)
{ MSG msg; HWND hwnd; hInst = hInstance;
WNDCLASS wc;

wc.style=wc.cbClsExtra=wc.cbWndExtra=0;
wc.lpfnWndProc=WndProc;
wc.hInstance=hInst;
wc.hIcon=LoadIcon(NULL, IDI_APPLICATION);
wc.hCursor=LoadCursor(NULL,IDC_ARROW);
wc.hbrBackground=(HBRUSH)(COLOR_APPWORKSPACE);
wc.lpszMenuName=NULL;
wc.lpszClassName=szClassName;
RegisterClass(&wc);

hwnd = CreateWindow(szClassName, "Bad Lamer's Application", WS_OVERLAPPEDWINDOW|WS_VISIBLE,250,250,350,150,0,0,hInstance,NULL);
if (!hwnd) return FALSE;

while (GetMessage(&msg,0,0,0)) DispatchMessage(&msg);
return msg.wParam;
}

///////////////////////////////////////////////////////////////////

LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
switch (msg)
{
case WM_DESTROY:
{PostQuitMessage(0); return 0;}

}
return DefWindowProc(hwnd,msg,wParam, lParam);
}
Вернуться к началу
Гость
Гость





СообщениеДобавлено: Ср Сен 22 2004 23:41    Заголовок сообщения: Ответить с цитатой

Bad Lamer писал(а):
Да тут ( в коде) много чего не хватает: нет цикла обработки сообщений, нет процедуры окна... да и структура WNDCLASS не полностью заполнена (хотя конечно это не обязательно...).
А вот тут должна быть не DefWindowProc, а процедура окна:

winex.lpfnWndProc=DefWindowProc;

Большое спасибо за помощь! Приведенный вами код дейтвительно работает - значит буду учиться дальше..=)))

Вернуться к началу
FUKS



Зарегистрирован: 14.04.2002
Сообщения: 148
Откуда: Москва

СообщениеДобавлено: Чт Сен 23 2004 11:03    Заголовок сообщения: Re: Гремучий winapi Ответить с цитатой

Цитата:

WINAPI WinMain(...)
{
...
return RegisterClassEx (&winex);

HWND winhandler=CreateWindowEx ...
}

хотя запускается нормально - а вот окошка нету.
я уж совсем начинающий - сильно не пинайте.

Ну так откуда ж оно возьмётся, если return из WinMain делается ещё до создания окна Cool. Этот кусок явно скроен из примера, где подготовительный код оформлен в виде функции, а здесь в WinMain засунут без "переваривания".
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Показать сообщения:   
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Программирование Часовой пояс: GMT + 3
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Powered by phpBB © 2001, 2002 phpBB Group
Русская поддержка phpBB

 

IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware

Информация для рекламодателей PR-акции, размещение рекламы — adv@citforum.ru,
тел. +7 495 6608306, ICQ 232284597
Пресс-релизы — pr@citforum.ru
Послать комментарий
Информация для авторов
This Web server launched on February 24, 1997
Copyright © 1997-2000 CIT, © 2001-2006 CIT Forum
Внимание! Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Подробнее...