C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
Показ окна из свернутого приложения
Gedeon
Отправлено: 22.06.2004, 18:55


Ветеран

Группа: Модератор
Сообщений: 1742



Собственно окно минимизировано с помощью TrayIcon(вкладка Samples). Дальше делаю
CODE

   HWND NMWND = FindWindow("TFNewMail","мыло");
   if(NMWND) return;

   TFNewMail *FNM = new TFNewMail(this);
   FNM->Caption = "мыло";
   FNM->Show();
   NMWND = FindWindow("TFNewMail","мыло");
   SetForegroundWindow(NMWND);

Сидим, втыкаем, когда гарантированно сработает таймер, нифига не видно.
Разворачиваем приложение и вот она перед нами TFNewMail, а как же сделать, чтобы увидеть эту форму не восстанавливая приложение из трэя?
Gedeon
Отправлено: 22.06.2004, 19:53


Ветеран

Группа: Модератор
Сообщений: 1742



Вот таким макаром получается и даже наверху всего
CODE

MessageBox(NULL,"Test","Test",MB_SYSTEMMODAL|MB_ICONWARNING);

, но хотелось бы показать свое окно или иконку свою в это вставить
MDM
Отправлено: 23.06.2004, 09:00


Не зарегистрирован







QUOTE (Gedeon @ 22/06/2004, 19:57)
Собственно окно минимизировано с помощью TrayIcon(вкладка Samples). Дальше делаю
CODE

HWND NMWND = FindWindow("TFNewMail","мыло");
if(NMWND) return;

TFNewMail *FNM = new TFNewMail(this);
FNM->Caption = "мыло";
FNM->Show();
NMWND = FindWindow("TFNewMail","мыло");
SetForegroundWindow(NMWND);

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

Надо разобраться с оконным стилем TFNewMail...

Я так понял ты MailChecker решил написать?
UA_Freeman
Отправлено: 23.06.2004, 09:11


Дежурный стрелочник

Группа: Участник
Сообщений: 31



Как насчёт
CODE
FNM->FormStyle=fsStayOnTop;

?
AVC
Отправлено: 23.06.2004, 09:15


Ветеран

Группа: Модератор
Сообщений: 1583



В свое время у меня без вывода из SysTray'z ни чего не поличилось. Но это было не принципиально и возиться дальше не стал (система рассылки сообщений от админа БД активным клиентам).
Мне кажется, что порождение нового процесса — самый дешевый способ.
Gedeon
Отправлено: 23.06.2004, 11:52


Ветеран

Группа: Модератор
Сообщений: 1742



Да по сути это мэилчекер, но специфический, он просто из логов пришедшие письма просматривает и далее принимает решение о действиях из настроек. Стиль формы самый обычный. Из трэя пока поднять получилось только MessageBoxIndirect(написано, что в нем можно показать свою иконку, пока не удалось), но это не совсем то, что хотелось бы, так временный выход.
2AVC Процесса или потока? Процесс сильно дорого для такого удовольствия smile.gif . Вообще говоря — это мысль, надо поковырять будет.
AVC
Отправлено: 23.06.2004, 12:19


Ветеран

Группа: Модератор
Сообщений: 1583



Если нужно быстро сделать — думаю процесс, скорее всего с потоком та же проблема.
Gedeon
Отправлено: 23.06.2004, 20:39


Ветеран

Группа: Модератор
Сообщений: 1742



Вдогонку. Почему при выполнении этого кода нужную иконку не показывает?
CODE

__fastcall TForm1::TForm1(TComponent* Owner)
   : TForm(Owner)
{
   //TMsgBoxParams mbp;
   MSGBOXPARAMS mbp;
   mbp.cbSize = sizeof(mbp);
   mbp.hwndOwner = this->Handle;
   mbp.hInstance = HInstance;
   mbp.lpszText = "Test";
   mbp.lpszCaption = "Test";
   mbp.dwStyle = MB_OKCANCEL|MB_USERICON|MB_APPLMODAL;
   //mbp.lpszIcon = "10";
   mbp.lpszIcon = "MAINICON";

   MessageBoxIndirect(&mbp);

   Application->Terminate();
}

Я нихрена уже не понимаю, че тока не перерыл, ну не показывает хоть тресни.
Gedeon
Отправлено: 24.06.2004, 11:00


Ветеран

Группа: Модератор
Сообщений: 1742



А под визуал сями вот это работает нормально:
CODE

   CWinApp::InitInstance();
   MSGBOXPARAMS mbp;
   mbp.cbSize = sizeof(MSGBOXPARAMS);
   mbp.dwLanguageId = LANG_NEUTRAL;
   mbp.hInstance = AfxGetInstanceHandle();
   mbp.hwndOwner = NULL;
   mbp.lpszText = "Пришла новая почта!";
   mbp.lpszCaption = "Мыло намылили :)";
   mbp.dwStyle = (DWORD)MB_OKCANCEL|MB_USERICON;
   mbp.lpszIcon = MAKEINTRESOURCE(IDI_NEWMAIL);
   MessageBoxIndirect(&mbp);

Похоже в билдере дела с ресурсами ужасно обстоят, а еще кто-то визуал ругал, оно конечно сложнее, но где вещи под апи и нет БД он рулит.

Вернуться в Вопросы программирования в C++Builder