Страница: 1 |
|
Вопрос: вопрос о ComDialog
|
Добавлено: 11.02.04 10:50
|
|
Автор вопроса: night-roll
|
подскажите пожалуйста, можно ли стандартное дилоговое окно (типа ChooseColor) показыватьв том месте экрана, где курсор или объект, который его вызывает. Использование типа hwnd формы не подходит!
Ответить
|
Номер ответа: 2 Автор ответа: night-roll
Вопросов: 36 Ответов: 326
|
Профиль | | #2
|
Добавлено: 11.02.04 15:10
|
если я ничего не путаю, то hWnd - это свойство формы top-level (слой положения окна) типа Long, тогда причем тут оно? мне хотелось бы знать, есть управление над окнами стандартных диалогов или нет!?
Ответить
|
Номер ответа: 4 Автор ответа: cresta
Вопросов: 117 Ответов: 1538
|
Профиль | | #4
|
Добавлено: 12.02.04 09:34
|
hWnd - это не свойство формы, а грубо говоря, его имя, или его адрес, по которому можешь выслать те или иные команды. Если имя диалогового окна выбора цвета( его заголовок) например "Выбор цвета", то найди его hWnd ChooseWnd= FindWindow(vbNullString, "Выбор цвета"), а затем определи точку, куда надо установить левый верхний угол окна и его ширину и высоту и затем MoveWindow(ChooseWnd, 200, 150, 175, 300, 1)
Ответить
|
Номер ответа: 7 Автор ответа: cresta
Вопросов: 117 Ответов: 1538
|
Профиль | | #7
|
Добавлено: 16.02.04 17:02
|
Не знаю, можно установить свой заголовок или нет при выборе цвета (при выборе файла можно). Если можно, то установи и ищи по этому заголовку. Если нет, то получи список всех открытых окон и через InStr найди которое из них содержит слово "цвет", если такого нет, ищи которое содержит "color" . Это немного усложняет задачу, но решить можно в любом случае. Причем искать надо в процедуре таймера, т.к. когда вызываешь ф-цию выбора цвета, твоя программа заморозится, пока не закончишь выбирать, и единственное место в программе, которое будет работать - это таймер.Вот на примере выбора файла: Часы1.Enabled = True ' здесь начинаем караулить появления окна ' а здесь ф-ция MyGetFileName перехватила управление Res1 = MyGetFileName(OFEOpenForLoad, Dir1, Flname(), Flt1(), , Me.hwnd) End Sub Private Sub Часы1_Timer() Dim v As String, ret As Long v = "Открыть файл[sensored]ха-муха" ret = FindWindow(vbNullString, v) If ret <> 0 Then ' если окно уже появилось MoveWindow ret, 0, 0, 700, 700, 1 ' двигаем его в точку 0, 0, ширина и высота по 700 Часы1.Enabled = False ' перестаем караулить End If End Sub
Ответить
|
Номер ответа: 9 Автор ответа: night-roll
Вопросов: 36 Ответов: 326
|
Профиль | | #9
|
Добавлено: 20.02.04 03:05
|
ладно понял я как поступить, hadle = CommonDialog1.hDC ' вот так я узнаю хандл этого окна retval = MoveWindow(hadle, 200, 150, 175, 300, 1) ' пытаемся двигать это окно CommonDialog1.ShowColor ' оно вот здесь только появляется а при появлении это окно ни на какие команды из моей проги не реагирует, т.е. поучается что я не могу получить ни его хендл ни двинуть его (либо его еще нет, либо уже нет). как быть
Ответить
|
Номер ответа: 10 Автор ответа: night-roll
Вопросов: 36 Ответов: 326
|
Профиль | | #10
|
Добавлено: 20.02.04 04:12
|
Все, НАШЕЛ! Всем спасибо! особенно creste кому надо мыльте мне пришлю два способа Вот что значит поискать !!!
Ответить
|
Страница: 1 |
Поиск по форуму