Суббота, 04 Мая 2024, 06:32

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 2
  • 1
  • 2
  • »
Форум игроделов » Программирование » C/C++ » WinApi нужна помощь (VS c++ 2008)
WinApi нужна помощь
kikas86Дата: Пятница, 19 Октября 2012, 13:23 | Сообщение # 1
постоянный участник
Сейчас нет на сайте
Всем привет, меня интересует такой вопрос, как в WinApi c++, включить альфа канал?

Услуги создания сайтов, верстки сайтов. Своя CMS, свой движок.

Сообщение отредактировал kikas86 - Пятница, 02 Ноября 2012, 18:27
НохчиДата: Воскресенье, 21 Октября 2012, 10:26 | Сообщение # 2
заслуженный участник
Сейчас нет на сайте
Quote (kikas86)
1. Не могу понять как можно сделать ввод переменных не через диалоги.

Quote
SendMessage(hEdit, WM_GETTEXT, BUFFSIZE, (LPARAM)buffer)

hEdit - хэндл твоего контрола. Результат получаешь в buffer.
Второй вопрос не понятен вообще.


Многие вопросы по Windows отпадут, если посмотреть тут
kikas86Дата: Воскресенье, 21 Октября 2012, 10:47 | Сообщение # 3
постоянный участник
Сейчас нет на сайте
уточните пожалуйста что такое BUFFSIZE?

Услуги создания сайтов, верстки сайтов. Своя CMS, свой движок.
НохчиДата: Воскресенье, 21 Октября 2012, 11:12 | Сообщение # 4
заслуженный участник
Сейчас нет на сайте
Quote (kikas86)
уточните пожалуйста что такое BUFFSIZE?

Размер твоего буфера.
Code

char buffer[512];
SendMessage(hEdit, WM_GETTEXT, 512, (LPARAM)buffer)


Многие вопросы по Windows отпадут, если посмотреть тут
kikas86Дата: Воскресенье, 21 Октября 2012, 16:57 | Сообщение # 5
постоянный участник
Сейчас нет на сайте
Спасибо большое. А то в диалогах знал как делать а вот это нет, все время пустой текст выводило.

Добавлено (21.10.2012, 16:57)
---------------------------------------------
Объясните пожалуйста почему в WM_TIMER
Code
x++;
hdc=BeginPaint(hwnd, &ps);
TextOut(hdc, x,10, "СЧИТАЛКА", 10);

Не работает, объясните если не правильно как сделать бегущую строку?


Услуги создания сайтов, верстки сайтов. Своя CMS, свой движок.

Сообщение отредактировал kikas86 - Воскресенье, 21 Октября 2012, 16:58
НохчиДата: Понедельник, 22 Октября 2012, 13:19 | Сообщение # 6
заслуженный участник
Сейчас нет на сайте
Quote (kikas86)
Не работает, объясните если не правильно как сделать бегущую строку?

Рисовать в WM_PAINT, а в WM_TIMER просто увеличивать x.
Code

case WM_TIMER:
       x++;
       InvalidateRect(hWnd, NULL, FALSE);
       break;
case WM_PAINT:
      BeginPaint(hwnd, &ps);  
      TextOut(ps.hdc, x,10, "СЧИТАЛКА", 10);
      EndPaint( hWnd, &ps );
      break;

как-то так.


Многие вопросы по Windows отпадут, если посмотреть тут
kikas86Дата: Понедельник, 22 Октября 2012, 15:23 | Сообщение # 7
постоянный участник
Сейчас нет на сайте
В движении объектов разобрался, но из за каждого обновления
Code
InvalidateRect(hwnd,NULL,TRUE);
я почему то могу создовать лишь только один обьект рисования, например
Code
Ellipse(hdc, x3+20,y3+20,x3+10,y3+10);
и все.
1. Подскажите как можно сделать несколько рисований одного и того же объекта.
2. Как сделать так что бы код работал корректно:
Code
  case WM_KEYDOWN:
     {
     if(wParam==VK_SPACE)shooter = 1;break;
     }
     break;
    case WM_KEYUP:
     {
     if(wParam==VK_SPACE)shooter = 0;break;
     }

Code
    if(shooter==1)
      {
       Ellipse(hdc, x4+40,y4+40,x4+20,y4+20);
      }

Ну это я пытаюсь реализовать стрельбу, вот при отпускании кнопки пропадает объект, я смысл конечно понимаю в чем проблема, но не понимаю как создать объект и при отпускании клавиши рисовать его дальше?


Услуги создания сайтов, верстки сайтов. Своя CMS, свой движок.

Сообщение отредактировал kikas86 - Понедельник, 22 Октября 2012, 17:32
ZweifxДата: Понедельник, 22 Октября 2012, 17:36 | Сообщение # 8
был не раз
Сейчас нет на сайте
kikas86,
Добавил перед: "InvalidateRect(hwnd, &rect, TRUE);" -> "GetClientRect(hwnd,&rect);". Проверил с еще одним эллипсом, работает.



Если никто не знает, это то же самое, как если бы этого не было вовсе.

Сообщение отредактировал Zweifx - Понедельник, 22 Октября 2012, 18:19
kikas86Дата: Понедельник, 22 Октября 2012, 17:42 | Сообщение # 9
постоянный участник
Сейчас нет на сайте
Quote (Zweifx)
Добавил перед: "InvalidateRect(hwnd, &rect, TRUE);" -> "GetClientRect(hwnd,&rect);". Проверил с еще одним эллипсом, работает.

Спасибо, а на счет стрельбы, ну то есть пр нажатии на пробел, что бы создавался эллипс, а при отпускании не исчезал, но при этом если я еще раз нажму новый создаться. Как так сделать?


Услуги создания сайтов, верстки сайтов. Своя CMS, свой движок.
ZweifxДата: Понедельник, 22 Октября 2012, 17:45 | Сообщение # 10
был не раз
Сейчас нет на сайте
kikas86,
Сделать класс эллипса, создать для него <vector>, и контролировать создание и удаление.


Если никто не знает, это то же самое, как если бы этого не было вовсе.
kikas86Дата: Вторник, 30 Октября 2012, 13:27 | Сообщение # 11
постоянный участник
Сейчас нет на сайте
Спасибо щас попробую.

Добавлено (30.10.2012, 13:27)
---------------------------------------------
Всем привет, меня интересует такой вопрос, как в WinApi c++, включить альфа канал?


Услуги создания сайтов, верстки сайтов. Своя CMS, свой движок.
ArchidoДата: Вторник, 30 Октября 2012, 13:47 | Сообщение # 12
Сэнсэй
Сейчас нет на сайте
Quote (kikas86)
Всем привет, меня интересует такой вопрос, как в WinApi c++, включить альфа канал?

Использовать ф-цию AlphaBlend?

P.S. Ты зря отредактировал первый пост, т.к. теперь непонятно о чем писали все остальные smile


C++ - он особенный. С помощью него можно не только выстрелить себе в ногу, но и повеситься в пустой комнате:)
НохчиДата: Вторник, 30 Октября 2012, 13:51 | Сообщение # 13
заслуженный участник
Сейчас нет на сайте
AlphaBlend

ADD:
Archido, опередил, молоток! biggrin


Многие вопросы по Windows отпадут, если посмотреть тут

Сообщение отредактировал Нохчи - Вторник, 30 Октября 2012, 13:52
ArchidoДата: Вторник, 30 Октября 2012, 13:59 | Сообщение # 14
Сэнсэй
Сейчас нет на сайте
Quote (Нохчи)
Archido, опередил, молоток!

tongue


C++ - он особенный. С помощью него можно не только выстрелить себе в ногу, но и повеситься в пустой комнате:)
kikas86Дата: Вторник, 30 Октября 2012, 21:34 | Сообщение # 15
постоянный участник
Сейчас нет на сайте
Quote (Archido)
P.S. Ты зря отредактировал первый пост, т.к. теперь непонятно о чем писали все остальные

ахаха ну да)))
Quote (Archido)
Использовать ф-цию AlphaBlend?

Quote (Нохчи)
AlphaBlend

Спасибо))))

Добавлено (30.10.2012, 21:34)
---------------------------------------------
вот проблема с ним возникла:

Code
1>project.obj : error LNK2001: неразрешенный внешний символ "__imp__AlphaBlend@44"
1>C:\Users\Никита\Documents\Visual Studio 2008\Projects\project_1\Release\Init_Project.exe : fatal error LNK1120: 1 неразрешенных внешних элементов

сам код
Code
BLENDFUNCTION bfn;
////////////////////................
bfn.BlendOp = AC_SRC_OVER;
bfn.BlendFlags = 0;
bfn.SourceConstantAlpha = 10;
bfn.AlphaFormat = AC_SRC_ALPHA;
////////////////////.......................
hdc1 = CreateCompatibleDC(hdc);
SelectObject(hdc1, hBitHero);
AlphaBlend(Memhdc, 200, 200, 32, 32, hdc1, 0, 0, 32, 32, bfn);  
DeleteDC(hdc1);

в чем ошибка?


Услуги создания сайтов, верстки сайтов. Своя CMS, свой движок.
НохчиДата: Вторник, 30 Октября 2012, 21:44 | Сообщение # 16
заслуженный участник
Сейчас нет на сайте
Прилинкуй Msimg32.lib.

Многие вопросы по Windows отпадут, если посмотреть тут
kikas86Дата: Вторник, 30 Октября 2012, 21:49 | Сообщение # 17
постоянный участник
Сейчас нет на сайте
Quote (Нохчи)
Прилинкуй Msimg32.lib.

в чем подвох? О_О


Услуги создания сайтов, верстки сайтов. Своя CMS, свой движок.
НохчиДата: Вторник, 30 Октября 2012, 21:51 | Сообщение # 18
заслуженный участник
Сейчас нет на сайте
Quote (kikas86)
в чем подвох? О_О

Какой еще подвох? По ссылке(в msdn) в разделе requirements черным по белому же написано:
Quote

Library: Msimg32.lib


Многие вопросы по Windows отпадут, если посмотреть тут
ArchidoДата: Вторник, 30 Октября 2012, 21:53 | Сообщение # 19
Сэнсэй
Сейчас нет на сайте
Quote (kikas86)
в чем подвох? О_О

Почему подвох? smile Эта ф-ция находится в библиотеке Msimg32.dll, а одноименный .lib файл осуществляет статическое связывание этой длл-ки с твоим кодом.


C++ - он особенный. С помощью него можно не только выстрелить себе в ногу, но и повеситься в пустой комнате:)

Сообщение отредактировал Archido - Вторник, 30 Октября 2012, 21:53
kikas86Дата: Вторник, 30 Октября 2012, 21:55 | Сообщение # 20
постоянный участник
Сейчас нет на сайте
ахахах)) спасибо) я че то не в читался) так пробежался и все biggrin
ток один здоровенный минус, он не рисует ! ну то что я написал, bitBlt - работает, а заменил на это он не работает вообще. =( что не так я написал?


Услуги создания сайтов, верстки сайтов. Своя CMS, свой движок.

Сообщение отредактировал kikas86 - Вторник, 30 Октября 2012, 21:57
Форум игроделов » Программирование » C/C++ » WinApi нужна помощь (VS c++ 2008)
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг