forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   C++ (http://forum.boolean.name/forumdisplay.php?f=22)
-   -   Win API, windows.h (http://forum.boolean.name/showthread.php?t=11556)

Reizel 23.12.2009 22:56

Win API, windows.h
 
Вот код:

Листинг №2 "Первое окно"
#include<windows.h>

//Создаём прототип функции окна, которая будет определена ниже
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
//объявляем строку-имя программы
char szProgName[]="Имя программы";

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpszCmdLine, int nCmdShow)
{
HWND hWnd;
MSG lpMsg;
WNDCLASS w; //создаём экземпляр структуры WNDCLASS

//И начинаем её заполнять
w.lpszClassName=szProgName; //имя программы - объявлено выше
w.hInstance=hInstance; //идентификатор текущего приложения
w.lpfnWndProc=WndProc; //указатель на функцию окна
w.hCursor=LoadCursor(NULL, IDC_ARROW); //загружаем курсор
w.hIcon=0; //иконки у нас не будет пока
w.lpszMenuName=0; //и меню пока не будет
w.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH ); //цвет фона окна
w.style=CS_HREDRAW|CS_VREDRAW; //стиль - перерисовываемое по х и по у
w.cbClsExtra=0;
w.cbWndExtra=0;

//Если не удалось зарегистрировать класс окна - выходим
if(!RegisterClass(&w))
return 0;

//Создадим окно в памяти, заполнив аргументы CreateWindow
hWnd=CreateWindow(szProgName, //Имя программы
"Моя первая программа!", //Заголовок окна
WS_OVERLAPPEDWINDOW, //Стиль окна - перекрывающееся
100, //положение окна на экране по х
100, //положение по у
500, //ширина
400, //высота
(HWND)NULL, //идентификатор родительского окна
(HMENU)NULL, //идентификатор меню
(HINSTANCE)hInstance, //идентификатор экземпляра программы
(HINSTANCE)NULL); //отсутствие дополнительных параметров

//Выводим окно из памяти на экран
ShowWindow(hWnd, nCmdShow);
//Обновим содержимое окна
UpdateWindow(hWnd);

//Цикл обработки сообщений

while(GetMessage(&lpMsg, hWnd, 0, 0)) { //Получаем сообщение из очереди
TranslateMessage(&lpMsg); //Преобразует сообщения клавиш в символы
DispatchMessage(&lpMsg); //Передаёт сообщение соответствующей функции окна
}
return(lpMsg.wParam);
}

//Функция окна
LRESULT CALLBACK WndProc(HWND hWnd, UINT messg,
WPARAM wParam, LPARAM lParam)
{
HDC hdc; //создаём контекст устройства
PAINTSTRUCT ps; //создаём экземпляр структуры графического вывода

//Цикл обработки сообщений
switch(messg)
{
//сообщение рисования
case WM_PAINT :
//начинаем рисовать
hdc=BeginPaint(hWnd, &ps);
//здесь вы обычно вставляете свой текст:
TextOut(hdc, 150,150, "Здравствуй, WIN 32 API!!!!", 26);
//закругляемся
//обновляем окно
ValidateRect(hWnd, NULL);
//заканчиваем рисовать
EndPaint(hWnd, &ps);
break;

//сообщение выхода - разрушение окна
case WM_DESTROY:
PostQuitMessage(0); //Посылаем сообщение выхода с кодом 0 - нормальное завершение
break;

default:
return(DefWindowProc(hWnd, messg, wParam, lParam)); //освобождаем очередь приложения от нераспознаных
}
return 0;
}




Сначала написал его сам, пытался вникнуть. Не работает. Потом скопипастил с книги. Не работает. Выбивает ЭТО:


Что это может быть???

ЗЫЖ Code::Bloks, MinGW

Samodelkin 31.12.2009 18:40

Ответ: Win API, windows.h
 
попробуй winmm.lib подключить

HolyDel 04.01.2010 10:11

Ответ: Win API, windows.h
 
ты создавал Win32 проект?

у меня все работает, на том же C::B и MinGW.

Reizel 04.01.2010 19:27

Ответ: Win API, windows.h
 
HolyDel создавал, Win32 gui project, возможно что то сделал косоруко (скорее всего), сейчас попробую по другому.
ЗЫ с другого сайта качал аналогичный пример, только там чуть проще - все работало идеально :)

ЗЫЗЫ пробовал в Win32 GUI - теперь ошибка еще страшнее... Он говорит, что препроцессинг прошел неудачно :(

Reizel 10.01.2010 21:54

Ответ: Win API, windows.h
 
Люди!!!! Пожалуйста!!!! Помогите!!!!
POINT pt;
GetCursorPos(&pt);
SendMessage(Wnd,WM_LBUTTONDOWN,NULL,LOWORD(pt.x)+H IWORD(pt.y));
SendMessage(Wnd,WM_LBUTTONUP,NULL,MAKELONG(pt.x,pt .y));


не работает!!! Почему???


Часовой пояс GMT +4, время: 15:20.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot