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 Процесса или потока? Процесс сильно дорого для такого удовольствия . Вообще говоря — это мысль, надо поковырять будет.
|
|
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); |
Похоже в билдере дела с ресурсами ужасно обстоят, а еще кто-то визуал ругал, оно конечно сложнее, но где вещи под апи и нет БД он рулит.
|
|