Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.01.2014, 19:29   #1
quqeiqa
Подтвердите свой е-майл
 
Регистрация: 22.01.2014
Сообщений: 23
По умолчанию WinAPI: Обновление графики

Вот код на DevC++
(шаблон для OpenGL-приложений)

Код:
 if (PeekMessage (&msg, NULL, 0, 0, 0x0001))
        {
            if (msg.message == WM_QUIT)
            {
                bQuit = TRUE;
            }
            else
            {
                TranslateMessage (&msg);
                DispatchMessage (&msg);
            }
        }
        else
        {
            // Здесь обновляется графика:
            glClearColor (0.0f, 0.0f, 0.0f, 0.0f);
            glClear (GL_COLOR_BUFFER_BIT);
			
            glPushMatrix ();
            glRotatef (theta, 0.0f, 0.0f, 1.0f);
            glBegin (GL_TRIANGLES);
            glColor3f (1.0f, 0.0f, 0.0f);   glVertex2f (0.0f, 1.0f);
            glColor3f (0.0f, 1.0f, 0.0f);   glVertex2f (0.87f, -0.5f);
            glColor3f (0.0f, 0.0f, 1.0f);   glVertex2f (-0.87f, -0.5f);
            glEnd ();
            glPopMatrix ();

            SwapBuffers (hDC);

            theta += 0.15f;
            Sleep (1);
        }



Вот тот же код на C#

Код:
		      WinAPI.MSG msg = new WinAPI.MSG();

			if (WinAPI.PeekMessage(ref msg, IntPtr.Zero, 0, 0, 0x0001))
			{
				if (msg.message == (uint)WM.QUIT)
				{
					Environment.Exit(0);
				}
				else
				{
					WinAPI.TranslateMessage(ref msg);
					WinAPI.DispatchMessage(ref msg);	
				}
			}
			else
			{
                        //Тут должная обновляться графика,
                             но этот код недостижим и выхода не происходит
				Environment.Exit(0);
			}


В DevC++ графика обновляется и рисуется. В C# этот же блок кода недостижим.

1. Почему?
2. Что не так?
3. Как надо?

Последний раз редактировалось quqeiqa; 22.01.2014 в 19:33.
quqeiqa вне форума Ответить с цитированием
Старый 22.01.2014, 19:59   #2
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

потому что дев-си примитив, а сишарп совершенство, вот поэтому код на нем недостижим
eval вне форума Ответить с цитированием
Старый 22.01.2014, 20:04   #3
quqeiqa
Подтвердите свой е-майл
 
Регистрация: 22.01.2014
Сообщений: 23
По умолчанию

что это значит?)
quqeiqa вне форума Ответить с цитированием
Старый 22.01.2014, 20:51   #4
Luuzuk
Форумчанин
 
Аватар для Luuzuk
 
Регистрация: 18.01.2012
Сообщений: 975
По умолчанию

Цитата:
потому что дев-си примитив, а сишарп совершенство, вот поэтому код на нем недостижим
недостижим и непостижим - разные вещи

quqeiqa:
http://msdn.microsoft.com/ru-ru/libr.../ms644943.aspx, а именно:
Цитата:
Return value
Type:
Type: BOOL
If a message is available, then return value is nonzero.
If no messages are available, then return value is zero.
Видимо в шарпе получилось так, что всегда есть доступное сообщение
Наверное придется поменять логику работы функции, а не просто переписать её с плюсов на шарп
Благодарить в репутацию. Проклинать — туда же
Luuzuk вне форума Ответить с цитированием
Старый 22.01.2014, 21:12   #5
quqeiqa
Подтвердите свой е-майл
 
Регистрация: 22.01.2014
Сообщений: 23
По умолчанию

а как надо?
quqeiqa вне форума Ответить с цитированием
Старый 22.01.2014, 21:13   #6
Luuzuk
Форумчанин
 
Аватар для Luuzuk
 
Регистрация: 18.01.2012
Сообщений: 975
По умолчанию

хз, думайте
Благодарить в репутацию. Проклинать — туда же
Luuzuk вне форума Ответить с цитированием
Старый 22.01.2014, 22:18   #7
simples
Форумчанин
 
Регистрация: 03.10.2013
Сообщений: 142
По умолчанию

Не занимайтесь ерундой переписывая все подряд с плюсов на шарп.
Вам надо OpenGL графику рисовать в окне C#? Ну так рисуйте! А очередь сообщений окна тащить для этого - не надо!
simples вне форума Ответить с цитированием
Старый 22.01.2014, 22:46   #8
quqeiqa
Подтвердите свой е-майл
 
Регистрация: 22.01.2014
Сообщений: 23
По умолчанию

мне надо чтоб графика постоянно обновлялась.
quqeiqa вне форума Ответить с цитированием
Старый 23.01.2014, 00:33   #9
simples
Форумчанин
 
Регистрация: 03.10.2013
Сообщений: 142
По умолчанию

Сложности с чем?
Код:
var needUpdateGraphics = true;
while(needUpdateGraphics)
{
  AbnavitjGraphiku();
  Thread.Sleep(1);
}
запущенное в отдельном потоке - это проблема для Вас?
simples вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Различие кода mfc и WinApi(mfc ручками набили, а WinApi автоматически с генерировался!! нужно явное отличие, не могу найти) Артём1991 Помощь студентам 0 25.03.2012 17:13
Графики в R Biblion Помощь студентам 0 03.04.2011 02:00
графики в VB Kracozebr Помощь студентам 0 20.07.2010 14:34
Графики Fantom.as Компоненты Delphi 4 23.04.2010 06:46
обновление в блоге - Анимированный осцилограф на WinAPI (С++) Pblog Обсуждение статей 0 16.08.2009 14:50