Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
| | |
это просто такой анекдот есть 22.11.02 17:37 Число просмотров: 1350
Автор: ggg <ggg> Статус: Elderman
|
кстати
>> this->ModifyStyle(WS_VISIBLE,WS_MINIMIZE,SWP_NOACTIVATE);
this-> здесь не нужен
и ещё:
у mfc отстойное описание
большинство функций mfc имеют аналоги в winapi
winapi лучше документировано
|
<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
|
|
|
|