информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Портрет посетителяСтрашный баг в Windows
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Три миллиона электронных замков... 
 Doom на газонокосилках 
 Умер Никлаус Вирт 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / programming
Имя Пароль
ФОРУМ
если вы видите этот текст, отключите в настройках форума использование JavaScript
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
[Win32] нет 23.11.02 01:23  Число просмотров: 1173
Автор: ggg <ggg> Статус: Elderman
<"чистая" ссылка>
как я понял ты через DoModal его создаёшь
тогда в InitDialog бесполезно его прятать, т.к. винда его сама показывает после этого сообщения
можно сделать PostMessage, а там уже спрятать любой функцией
<programming>
[Win32] Dialog window 22.11.02 03:46  
Автор: beetle <beetle> Статус: Member
<"чистая" ссылка>
в функции OnInitDialog из реестра считывается прошлое состояние окна приложения (Minimized/Maximized) и потом соответсвенно либо показываю окно либо не показываю.
Не показываю таким образом:
if (!m_bIsForegroundWnd)
this->ModifyStyle(WS_VISIBLE,WS_MINIMIZE,SWP_NOACTIVATE);
но при этом видно кнопку окна в TaskBar. Как полностью спрятать окно диалога оперируя из OnInitDialog (когда окно еще не нарисовано)
[Win32] Dialog window 25.11.02 00:04  
Автор: vim Статус: Незарегистрированный пользователь
<"чистая" ссылка>
> в функции OnInitDialog из реестра считывается прошлое
> состояние окна приложения (Minimized/Maximized) и потом
> соответсвенно либо показываю окно либо не показываю.
> Не показываю таким образом:
> if (!m_bIsForegroundWnd)
>
> this->ModifyStyle(WS_VISIBLE,WS_MINIMIZE,SWP_NOACTIVATE)
> ;
> но при этом видно кнопку окна в TaskBar. Как полностью
> спрятать окно диалога оперируя из OnInitDialog (когда окно
> еще не нарисовано)

Я делал это так:

// Constructor

CDriver5GuiDlg::CDriver5GuiDlg(CWnd* pParent =NULL)
: CDialog(CDriver5GuiDlg::IDD, pParent), m_tray(IDR_TRAY_PICT_OFF,Driver)
{
//{{AFX_DATA_INIT(CDriver5GuiDlg)
//}}AFX_DATA_INIT
// Note that LoadIcon does not require a subsequent DestroyIcon in Win32
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);

// Creating modeless (not modal) dialog box window
// (doesn't need for modal dialog box)
CDialog::Create(IDD_DRIVER5GUI_DIALOG,NULL);
}

А затем

BOOL CDriver5GuiDlg::OnInitDialog()
{
CDialog::OnInitDialog();

int showCmd;
theApp.LoadRegistrySettings( MainWindowRect, ColumnWidth, NUM_COLUMNS, showCmd );

...

ShowWindow( showCmd );

return TRUE; // return TRUE unless you set the focus to a control
}


Вроде все работало
а у нас в России научились удалять аппендицит... автогеном... через %опу :)) 22.11.02 04:07  
Автор: ggg <ggg> Статус: Elderman
<"чистая" ссылка>
ShowWindow(SW_HIDE);

можно поставить стиль toolwindow, тогда вообще никогда не будет кнопки в таскбаре
а у нас в России научились удалять аппендицит... автогеном... через %опу :)) 22.11.02 12:04  
Автор: beetle <beetle> Статус: Member
<"чистая" ссылка>
> ShowWindow(SW_HIDE);
>
> можно поставить стиль toolwindow, тогда вообще никогда не
> будет кнопки в таскбаре
вот как раз > ShowWindow(SW_HIDE); это и будет автогеном удалять аппендицит как у Вас в России
это просто такой анекдот есть 22.11.02 17:37  
Автор: ggg <ggg> Статус: Elderman
<"чистая" ссылка>
кстати
>> this->ModifyStyle(WS_VISIBLE,WS_MINIMIZE,SWP_NOACTIVATE);
this-> здесь не нужен

и ещё:
у mfc отстойное описание
большинство функций mfc имеют аналоги в winapi
winapi лучше документировано
[Win32] это просто такой анекдот есть 22.11.02 18:53  
Автор: beetle <beetle> Статус: Member
<"чистая" ссылка>
> кстати
> >>
> this->ModifyStyle(WS_VISIBLE,WS_MINIMIZE,SWP_NOACTIVATE)
> ;
> this-> здесь не нужен
>
> и ещё:
> у mfc отстойное описание
> большинство функций mfc имеют аналоги в winapi
> winapi лучше документировано
хоть это и выглядит, как самовосхваление, но тем не менее я решил запостить этот тред лишь после ночи поисков и экспериментов. И ModifyStyle - это примитивная реализация SetWindowPos, но тем не менее ни черта у меня не выходит. Я просто заставляю окно стартовать минимизированным - на TaskBar кнопка все равно появляется. Что то посоветуешь может быть?
а разве ShowWindow(SW_HIDE) не работает? 22.11.02 23:00  
Автор: ggg <ggg> Статус: Elderman
<"чистая" ссылка>
а если создаёшь диалог через Create(), то можно просто в ресурсах диалога убрать стиль WS_VISIBLE
[Win32] нет 23.11.02 01:15  
Автор: beetle <beetle> Статус: Member
<"чистая" ссылка>
> а если создаёшь диалог через Create(), то можно просто в
> ресурсах диалога убрать стиль WS_VISIBLE
мне нужно в процессе обработки WM_INITDIALOG в зависимости от предыдущей сессии либо показывать окно нормальным образом, либо показывать только иконку в Tray . Я уже пробовал и стиль WS_VISIBLE убирать и WS_MINIMIZE ставил - окно просто стартует в минимизированном виде (при этом рисуется кнопка окна на TaskBar )черт его дери. А нужно, чтобы кнопка эта не рисовалась вообще.
[Win32] нет 23.11.02 01:23  
Автор: ggg <ggg> Статус: Elderman
<"чистая" ссылка>
как я понял ты через DoModal его создаёшь
тогда в InitDialog бесполезно его прятать, т.к. винда его сама показывает после этого сообщения
можно сделать PostMessage, а там уже спрятать любой функцией
[Win32] а как не дать винде отобразить окно 23.11.02 23:11  
Автор: beetle <beetle> Статус: Member
<"чистая" ссылка>
> как я понял ты через DoModal его создаёшь
> тогда в InitDialog бесполезно его прятать, т.к. винда его
> сама показывает после этого сообщения
> можно сделать PostMessage, а там уже спрятать любой
> функцией
тогда создается еффект мерцания на экране - это неприятно
как заставить Windows не отображать окно вообще?
[Win32] а как не дать винде отобразить окно 23.11.02 23:40  
Автор: ggg <ggg> Статус: Elderman
<"чистая" ссылка>
через DoModal если и можно, то какими-нибудь извращениями
я не знаю как

если создавать диалог через Create() и не указать WS_VISIBLE в ресурсах, то диалога не будет видно

я давно не писал на mfc
там кажется ещё в InitInstance() нужно TRUE возвращать для Create()
Нет, однако — это реализация функции API SetWindowLong ;-) Плюс, посмотри функцию Get\SetWindowPlacement, может подойдёт тебе. 22.11.02 22:05  
Автор: HandleX <Александр М.> Статус: The Elderman
<"чистая" ссылка>
1




Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2024 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach