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





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
[Win32] нет 23.11.02 01:15  Число просмотров: 1233
Автор: beetle <beetle> Статус: Member
<"чистая" ссылка>
> а если создаёшь диалог через Create(), то можно просто в
> ресурсах диалога убрать стиль WS_VISIBLE
мне нужно в процессе обработки WM_INITDIALOG в зависимости от предыдущей сессии либо показывать окно нормальным образом, либо показывать только иконку в Tray . Я уже пробовал и стиль WS_VISIBLE убирать и WS_MINIMIZE ставил - окно просто стартует в минимизированном виде (при этом рисуется кнопка окна на TaskBar )черт его дери. А нужно, чтобы кнопка эта не рисовалась вообще.
<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