Страница 3 из 4
Re: Графика в MS Visual 2005 C++
Добавлено: 24 ноя 2008, 21:19
Romeo
WinMain, спасибо за моральную поддержку
Vladimir89, bGisto должен быть глобальной переменной типа bool. Я подразумевал это, неужели не понятно? В Invalidate передаётся ещё один параметр типа BOOL - очищать заинвалидейченную облать или нет. Передавай туда TRUE.
У тебе ещё не хватает обработчика WM_DESTROY. В нём нужно не забыть вызвать PostQuitMessage и не забыть вызывать также DefWindowProc - это важно. Никогда не сталкивался с проблемой, что твою программу приходится снимать через Task Manager?

Re: Графика в MS Visual 2005 C++
Добавлено: 01 дек 2008, 02:53
Vladimir89
УРРЯЯЯЯ!
У МЕНЯ ЗАРАБОТАЛА КНОПОЧКА!!!!!!!
Re: Графика в MS Visual 2005 C++
Добавлено: 01 дек 2008, 13:04
Vladimir89
ААААААА
Эта дрянь опять не работает!
Решил сделать так: когда появляется окно программы там буде тнаписано текстом: работа такого-то такого-то. А потом когда нажмешь одну кнопку - рисуются точки. А потом когда нажмешь кнопку гистограмма рисуется гистограмма.
И вот значит я написал... Для начала просто тупо с текстом:
Код: Выделить всё
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
int wmId, wmEvent;
PAINTSTRUCT ps;
HDC hdc;
int bGisto=0;
int mas[2][500];
switch (message)
{
case WM_COMMAND:
wmId = LOWORD(wParam);
wmEvent = HIWORD(wParam);
// Parse the menu selections:
switch (wmId)
{
case IDM_ABOUT:
DialogBox(hInst, MAKEINTRESOURCE(IDD_ABOUTBOX), hWnd, About);
break;
case IDM_EXIT:
DestroyWindow(hWnd);
break;
case ID_GISTO:
bGisto=2;
//InvalidateRect(hWnd,NULL,TRUE);
case ID_POINT:
bGisto=1;
//InvalidateRect(hWnd,NULL,TRUE);
break;
default:
return DefWindowProc(hWnd, message, wParam, lParam);
}
break;
case WM_PAINT: /////////////////////////////////////////////
hdc = BeginPaint(hWnd, &ps);
if(bGisto==1)
{
//for(int i=0; i<500;i++)
//SetPixel(hdc,mas[0][i],mas[1][i],0);
TextOut(hdc,50,50,_T("Группа ПО0602"),39);
}
else
TextOut(hdc,0,0,_T("Работа Шалаева Владимира. Группа ПО0602"),39);
EndPaint(hWnd, &ps);
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hWnd, message, wParam, lParam);
}
return 0;
}
Re: Графика в MS Visual 2005 C++
Добавлено: 01 дек 2008, 13:07
Vladimir89
Кнопки не работают! Ничего не работает и не изменяется!
Почему с 1 кнопкой работало а с 2мя уже не хочет?!!!!!
ППЦ!
Re: Графика в MS Visual 2005 C++
Добавлено: 01 дек 2008, 13:59
Vladimir89
С кнопками разобраться получилось!
Теперь все работает!
У меня новый вопрос: про комманду GetPixel
Мне нужно проверить всё окно программы на наличие темных точек. И запомнить координаты этих темных точек!
ГетПиксель возвращает какое то очень странное значение COLORREF - как им пользоваться никак не могу догадаться!
В общем мне нужен способ как сделать грамотно: if("цвет точки"=="черный") то добавляем координату в массив.
Re: Графика в MS Visual 2005 C++
Добавлено: 01 дек 2008, 14:10
Vladimir89
Еще не получается понять как пользоваться СетТаймером!
Пишу ему так: SetTimer(hWnd,1,2000,0);
Но не работает! ппц!
Re: Графика в MS Visual 2005 C++
Добавлено: 01 дек 2008, 22:22
Romeo
1. Я же написал, что bGisto должен быть глобальной переменной, ты различаешь глобальные и локальные переменные?
2. Черный, это RGB(0, 0, 0). Можешь его вполне законно сравнивать оператором == с тем, что возвращает тебе GetPixel.
3. Ты сообщение WM_TIMER обработал в том окне, дескриптор которого передал в SetTimer в качестве первого аргумента? Если нет, то неудивительно, что не работает. Почитай внимательной в MSDN о функции SetTimer, не пытайся всё взять наскоком и методом проб и ошибок - это самый неправильный метод в программировании.
Re: Графика в MS Visual 2005 C++
Добавлено: 06 дек 2008, 03:35
Vladimir89
Появился смешной вопрос!
Я создал статический массив int mas[2][500];
Теперь мне нужно передать его в функцию для обработки.
Я как только не изгалялся! Не получается! Мне нужно передать адрес его начала, ведь так? вот я пишу void random(int** mas)... Не работает! Через ссылку пробовал! Не получается! Я знаю что это идиотизм, но если кто сможет - подскажите!
Re: Графика в MS Visual 2005 C++
Добавлено: 06 дек 2008, 17:28
Romeo
Слушай, у одного меня такой код компилируется?
Код: Выделить всё
int mas[30][10];
void f(int p[30][10])
{
}
void main()
{
f(mas);
}
Re: Графика в MS Visual 2005 C++
Добавлено: 06 дек 2008, 18:14
Vladimir89
А мы таким макаром случайно не одно число передадим? оО