Visual Basic, .NET, ASP, VBScript
 

   
   
     

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

Страница: 1 |

 

  Вопрос: вопрос о ComDialog Добавлено: 11.02.04 10:50  

Автор вопроса:  night-roll
подскажите пожалуйста, можно ли стандартное дилоговое окно (типа ChooseColor) показыватьв том месте экрана, где курсор или объект, который его вызывает. Использование типа hwnd формы не подходит!

Ответить

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

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



Вопросов: 117
Ответов: 1538
 Профиль | | #1 Добавлено: 11.02.04 12:19
Попробуй найти hWnd диалогового окна, тем более что ты знаешь его заголовок, и двигай его через MoveWindow

Ответить

Номер ответа: 2
Автор ответа:
 night-roll



Вопросов: 36
Ответов: 326
 Профиль | | #2 Добавлено: 11.02.04 15:10

если я ничего не путаю, то hWnd - это свойство формы top-level (слой положения окна) типа Long, тогда причем тут оно?

мне хотелось бы знать, есть управление над окнами стандартных диалогов или нет!?

Ответить

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



Вопросов: 5
Ответов: 57
 Профиль | | #3 Добавлено: 11.02.04 15:26
cresta тебе и говорит о хэндле окна, где цвет выбирается. MoveWindow
работает с хэндлом.

Ответить

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



Вопросов: 117
Ответов: 1538
 Профиль | | #4 Добавлено: 12.02.04 09:34

hWnd - это не свойство формы, а грубо говоря, его имя, или его адрес, по которому можешь выслать те или иные команды. Если имя диалогового окна  выбора цвета( его заголовок) например "Выбор цвета", то найди его hWnd

ChooseWnd= FindWindow(vbNullString, "Выбор цвета"), а затем определи точку, куда надо установить левый верхний угол окна и его ширину и высоту и затем MoveWindow(ChooseWnd, 200, 150, 175, 300, 1)

Ответить

Номер ответа: 5
Автор ответа:
 night-roll



Вопросов: 36
Ответов: 326
 Профиль | | #5 Добавлено: 15.02.04 21:31
А как быть, если ОС другого компа отличается от моей? Тогда возможно разногласие с именами форм. Например ("Цвет" и "Color")

Ответить

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



Разработчик Offline Client

ICQ: 204447456 

Вопросов: 180
Ответов: 4229
 Web-сайт: basicproduction.nm.ru
 Профиль | | #6
Добавлено: 16.02.04 03:57
ChooseColor - это не стандартное для VB диалоговое окно. Стандартное - CommonDialog.ShowColor

Ответить

Номер ответа: 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

Ответить

Номер ответа: 8
Автор ответа:
 night-roll



Вопросов: 36
Ответов: 326
 Профиль | | #8 Добавлено: 20.02.04 02:53
cresta, че-то ты кусок не сначала шлешь, скинь мне на мыло, если он такой большой. Буду признателен

Ответить

Номер ответа: 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 |

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



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