Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: Ещё про PB Добавлено: 16.04.05 21:54  

Автор вопроса:  kolyanoid
Народ! Подскажите, с какими параметрами нужно создавать окно (диалог), чтоб можно было переключаться между ним и дочерним окном?

Просто, делаю ДЛЛ, которая создаёт окно и делает окно проги, которая вызвала эту функцию ДЛЛ, дочерним для созданного окна... И вот после этой манипуляции на окно созданное ДЛЛкой (то есть parent-окно) не падает фокус, соответственно, все его контроллы становятся недоступны
:((

Подскажите, если знаете, с какими параметрами в ПБ нужно создавать это окно? Или АПИ-функцию какую заюзать?

Ответить

  Ответы Всего ответов: 7  

Номер ответа: 1
Автор ответа:
 cresta



Вопросов: 117
Ответов: 1538
 Профиль | | #1 Добавлено: 17.04.05 00:26
Что, SteFocus не помогает? Или SteForegroundWindow.

И что создаёшь, диалог или окно?

Ответить

Номер ответа: 2
Автор ответа:
 cresta



Вопросов: 117
Ответов: 1538
 Профиль | | #2 Добавлено: 17.04.05 00:29
Тю, блин SetFocus - SetForegroundWindow

Ответить

Номер ответа: 3
Автор ответа:
 kolyanoid



Вопросов: 19
Ответов: 60
 Профиль | | #3 Добавлено: 17.04.05 10:02
Я создаю диалог (DIALOG NEW). Но ведь, как я понял, там под этим "термином" окно и подразумевается, смотря с какими параметрами его запустить... Я его делаю так:

  ;DIALOG NEW 0, Caption$,X&,Y&, W&, H&,%WS_OVERLAPPEDWINDOW OR %DS_SETFOREGROUND,%WS_EX_OVERLAPPEDWINDOW TO hDlg
  SetParent(BYVAL DBHnd&,BYVAL hDlg)
  ;DIALOG SHOW MODELESS hDlg TO lResult

DBHnd& - хэндл окна проги, которая эту ДЛЛ загрузила и вызвала ЭТУ функцию...


При всём при том, если не делать главное окно проги дочерним для созданного, то с фокусами всё в полном порядке... Но мне надо, чтоб всё было ОК именно когда оно дочерние...

При всё при етом:
1) С PureBasic такой проблемы не было.
2) С VB ну там я отдельный ЕХЕшник делал, а не ДЛЛ) тоже гемора не было...

А вот ещё:
Когда окно проги сворачивается (внутри созданного окна), то это окно становится доступным (т.е. фокус на него нормально падает и контроллы работают)

********
SetForegroundWindow и SetFocus не помогают...

Ещё. После долгих эксперементов выяснил, что фокус-то падает. Но он сразу же возвращается к дочернему окну... Может с ним что-то надо сделать?

Ответить

Номер ответа: 4
Автор ответа:
 kolyanoid



Вопросов: 19
Ответов: 60
 Профиль | | #4 Добавлено: 17.04.05 10:16
Кстати, если его сделать модальным, то это картины не изменит (с точки зрения фокусов). Мне именно MODELESS нужен, без него всё запарывается

DIALOG DOEVENTS не помогает (от него скорость работы программы снижается в 15 раз (если без DOEVENTS прога пашет со скоростью 990 проходов цикла в секунду, то с ним - 60-70)

Ответить

Номер ответа: 5
Автор ответа:
 cresta



Вопросов: 117
Ответов: 1538
 Профиль | | #5 Добавлено: 17.04.05 11:44
Вообще-то, диалог и окно - вещи совершенно разные. Работа с диалогом имеет кучу нюансов и ограничений, в отличие от окна.

Попробуй DIALOG SHOW MODELESS
заменить на DIALOG SHOW MODAL.
Может выручит.

Хотя по большому счёту, я бы не поленился, и сделал бы окно нормальным способом: через CreateWindowEx.

Ответить

Номер ответа: 6
Автор ответа:
 cresta



Вопросов: 117
Ответов: 1538
 Профиль | | #6 Добавлено: 17.04.05 11:45
Блин, про MODAL не заметил :)

Ответить

Номер ответа: 7
Автор ответа:
 kolyanoid



Вопросов: 19
Ответов: 60
 Профиль | | #7 Добавлено: 17.04.05 11:55
Спасибо, cresta! :)
Я разобрался с этим гемороем.
Надо было просто делать окно проги (которая вызывает ДЛЛ) без заголовка, кнопок и т.п. (т.е. голое рабочее поле, без зоны, за которую окно можно таскать мышом по экрану и изменяь размер)... Хотя мне именно этот режим и нужен, тем не менее, очень странно, ведь и в PureBasic'е и в ВБ всё работало нормально во всех режимах о_О

Ладно, спасибо за отзывчивость :) и сорри за беспокойство :(

P.S.
Я сначала тоже хотел всё это на АПИ посторить... но чё-то много гемолроя было и проект медленно как-то двигался... Поетому, решил освоить стандартные средства работы с окнами ;)

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам