Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> хендл главного окна 
:(
    Опции темы
decembrist
  Дата 1.3.2005, 12:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 238
Регистрация: 1.4.2004

Репутация: нет
Всего: нет



Как вызвать хендл главного окна (HWND hwnd)?
PM MAIL   Вверх
maxim1000
Дата 1.3.2005, 12:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 3334
Регистрация: 11.1.2003
Где: Киев

Репутация: 17
Всего: 110



что есть главное окно?


--------------------
qqq
PM WWW   Вверх
decembrist
Дата 1.3.2005, 12:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 238
Регистрация: 1.4.2004

Репутация: нет
Всего: нет



Если главное окно описано так
(не под апи)
Код

int main (int argc,char **argv)
{

...
return 0;
}

Добавлено @ 12:34
Дело в том что мне таймер нужно создать. А так как прога написана не под апи, то по хендлу и событию WM_TIMER не канает. Вот и не знаю как выкрутится. smile
PM MAIL   Вверх
maxim1000
Дата 1.3.2005, 12:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 3334
Регистрация: 11.1.2003
Где: Киев

Репутация: 17
Всего: 110



ага...насколько я понял, пишется консольное приложение
я где-то встречал вариант с поиском окна, но мне он не очень нравится...
Цитата
А так как прога написана не под апи

что значит "не под API"? если программа пишется под Windows, то она уже под API
а для использования таймера есть два варианта:
1. использовать его без окна (тогда он будет вызывать процедуру вместо посылки сообщения)
2. создать окно специально для таймера (начиная с какой-то версии Windows есть даже такое понятие MessageWindow - окно, предназначенное специально для работы с сообщениями)


--------------------
qqq
PM WWW   Вверх
decembrist
Дата 1.3.2005, 13:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 238
Регистрация: 1.4.2004

Репутация: нет
Всего: нет



Цитата
использовать его без окна (тогда он будет вызывать процедуру вместо посылки сообщения)

Правильно, я так и пытался сделать:

Код

int main (int argc,char **argv)
{
 if ((argc == GL_FALSE)||(argv == GL_FALSE))
 {
    auxQuit();
 }
 auxInitPosition(0, 0, 550, 550);//расположение окна 550 - 95mm
 auxInitDisplayMode(AUX_RGB|AUX_DOUBLE);
 
 if (auxInitWindow("Индикатор кругового обзора") == GL_FALSE)
 {
    auxQuit();
 }
 Init();
 auxIdleFunc(Draw);
auxReshapeFunc((AUXRESHAPEPROC)Reshape);
 auxMainLoop(Draw);
 return 0;
}

было так. Мне нужно переписать код так, чтоб ф-ция Draw работала по таймеру.
Я пробовал в main вызвать SetTimer(NULL, 0, 40, (TIMERPROC) MyTimerProc);
где в MyTimerProc запихнул Draw , но не сработало.
Как правильно оформить запись? smile
PM MAIL   Вверх
srd
Дата 1.3.2005, 13:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нереварин
**


Профиль
Группа: Участник Клуба
Сообщений: 951
Регистрация: 30.8.2003
Где: Владивосток

Репутация: 27
Всего: 49



HWND GetConsoleWindow(void) - функция есть в Windows 2000 и выше.
Либо, как говорит maxim1000, SetConsoleTitle + FindWindow.


Цитата(decembrist @ 1.3.2005, 19:30)
Если главное окно описано так
(не под апи)
Код

int main (int argc,char **argv)
{

...
return 0;
}

Это не главное окно, это функция main smile



--------------------
Не смей читать мою подпись!!!
PM MAIL Jabber   Вверх
maxim1000
Дата 1.3.2005, 13:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 3334
Регистрация: 11.1.2003
Где: Киев

Репутация: 17
Всего: 110



есть еще вариант с Waitable Timer (о них можно почитать в MSDN)


--------------------
qqq
PM WWW   Вверх
decembrist
Дата 2.3.2005, 12:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 238
Регистрация: 1.4.2004

Репутация: нет
Всего: нет



srd? сорри! smile Ваша правда. Так вот в ф-ции main, все таки, как мне вызвать событие WM_TIMER? smile
PM MAIL   Вверх
srd
Дата 2.3.2005, 13:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нереварин
**


Профиль
Группа: Участник Клуба
Сообщений: 951
Регистрация: 30.8.2003
Где: Владивосток

Репутация: 27
Всего: 49



SetTimer прекрасно работает, только что проверил:
Код

#include <windows.h>
#include <iostream>

void CALLBACK func(HWND, UINT, UINT_PTR, DWORD dwTime)
{
   std::cout << dwTime << '\n';
}

int main(void)
{
   const int id = 1;

   SetTimer(NULL, id, 100, func);

    // без цикла выборки сообщений таймер не работает.
   MSG msg;
   while (GetMessage(&msg, NULL, 0, 0))
   {
       TranslateMessage(&msg);
       DispatchMessage(&msg);
   }

   KillTimer(NULL, id);

   return 0;
}




--------------------
Не смей читать мою подпись!!!
PM MAIL Jabber   Вверх
decembrist
Дата 2.3.2005, 13:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 238
Регистрация: 1.4.2004

Репутация: нет
Всего: нет



Спасибо, сейчас попробую у себя! smile
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0495 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.