|
|
|
HDC и HWND обьекта как определить ?
|
|||
|---|---|---|---|
|
#18+
Доброе время суток господа садмины и сусопы ! Имею Set Items = cmBars.Controls.Add(msoComboEdit) Items.Tag="Hello" Как ли при таких входящих параметрах определить HDC и HWND обьекта Items ? Спасибо ! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.01.2007, 11:03 |
|
||
|
HDC и HWND обьекта как определить ?
|
|||
|---|---|---|---|
|
#18+
А если через API GetProp попробывать Ну Hwnd может не быть Но HDC наверняка должен быть ...... Спасибо ! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.01.2007, 18:17 |
|
||
|
HDC и HWND обьекта как определить ?
|
|||
|---|---|---|---|
|
#18+
Как раз наоборот, без hwnd hdc быть не может. Вообще, в курсе, что такое одно и другое? Что-то мне подсказывает, что дело просходит в VBA, а там у контролов hwnd нет. Угадал? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.01.2007, 20:38 |
|
||
|
HDC и HWND обьекта как определить ?
|
|||
|---|---|---|---|
|
#18+
AntonariyЧто-то мне подсказывает, что дело просходит в VBA, а там у контролов hwnd нет. Угадал? hwnd у контролов типа msoControlEdit есть, в этом легко убедиться с помощью Spy++. Один из вариантов как найти hwnd такого контрола, если известно hwnd окна приложения Office (например, для Access это Application.HwndAccessApp): 1. находится hwnd окна MsoDockTop h1 = FindWindowEx(Application.hWndAccessApp, 0&, vbNullString, "MsoDockTop") 2. Находится hwnd нужного CommandBar h1 = FindWindowEx(h1, 0&, vbNullString, "MyCommandBar") 3. Находятся hwnd дочерних окон. Можно использовать GetWindow или EnumChildWindows или опять же FindWindowEx может можно и проще, но и это несложно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.01.2007, 03:24 |
|
||
|
HDC и HWND обьекта как определить ?
|
|||
|---|---|---|---|
|
#18+
Старый ворчун hwnd у контролов типа msoControlEdit есть, в этом легко убедиться с помощью Spy++.Если этот загадочный msoControlEdit - ActiveX, то таки да, есть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.01.2007, 09:56 |
|
||
|
HDC и HWND обьекта как определить ?
|
|||
|---|---|---|---|
|
#18+
Antonariy Старый ворчун hwnd у контролов типа msoControlEdit есть, в этом легко убедиться с помощью Spy++.Если этот загадочный msoControlEdit - ActiveX, то таки да, есть. И что в нем загадочного? Обычный Office CommandBarControl. Посмотрите Microsoft Office Visual Basic Reference: авторCreates a new CommandBarControl object and adds it to the collection of controls on the specified command bar. expression.Add(Type, Id, Parameter, Before, Temporary) expression Required. An expression that returns a CommandBarControls object. Type Optional Variant. The type of control to be added to the specified command bar. Can be one of the following MsoControlType constants: msoControlButton, msoControlEdit, msoControlDropdown, msoControlComboBox, or msoControlPopup. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.01.2007, 14:42 |
|
||
|
HDC и HWND обьекта как определить ?
|
|||
|---|---|---|---|
|
#18+
Прошу прощения за отсутствие - были проблемы со связью Как говорили связисты - спутник сошел с орбиты (сбили арабы) - телеф. колодязь залило фикальными водами (снова арабы ...........) - снижение температуры по Украине привело к изменению принципа электронно-дырочной проводимости кремния............. - и т.д. и т.п. Hwnd в Cpy++ у меня появляеться если был хоть один перенос фокуса Если обьект еще не был активен - Hwnd нет (по иерархии окон искал - НЕТУ) А из параметров (указатель на обьект и Tag обьекта) получить эту HDC невозможно ? Set Items = cmBars.Controls.Add(msoComboEdit) Items.Tag="Hello" "Вообще, в курсе, что такое одно и другое................" Вы правы - что есть Hwnd - видел, понимаю - указатель на окно представленный в виде уникального длинного целого числа Что есть HDC - читал, догадываюсь но до конца не чувствую.......................(пардон) "просходит в VBA, а там у контролов hwnd нет....." Абсолютно точно в приложении Outlook - это элемент CommandBar............... Хочу в координатах Add.Controls сделать так ................... (погнать закраску) но нужен HDC - как его найти .............. ? Private Const COLOR_HIGHLIGHT = 13 Private Declare Function GetSysColorBrush Lib "user32" (ByVal nIndex As Long) As Long Private Declare Function FillRect Lib "user32" (ByVal hdc As Long, lpRect As Rect, ByVal hBrush As Long) As Long Private Sub ......................... Dim R As Rect I = I + 10 R.Left = 10 R.Top = 10 R.Right = 10 + I R.Bottom = 50 Call FillRect(Hdc, R, GetSysColorBrush(13)) End Sub ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2007, 15:38 |
|
||
|
HDC и HWND обьекта как определить ?
|
|||
|---|---|---|---|
|
#18+
HOME_X"просходит в VBA, а там у контролов hwnd нет....." Абсолютно точно в приложении Outlook - это элемент CommandBar............... А у CommandBar Hwnd есть...... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2007, 17:12 |
|
||
|
HDC и HWND обьекта как определить ?
|
|||
|---|---|---|---|
|
#18+
Его возможно получить через ...... Private Declare Function ApiGetActiveWindow Lib "user32" Alias "GetActiveWindow" () As Long Private Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As Long, ByVal H = FindWindowEx(ApiGetActiveWindow, 0, "MsoCommandBarDock", "MsoDockTop") H = FindWindowEx(H, 0, "MsoCommandBar", "FTP_FOSS") но если в обьекте Controls.Add(msoComboEdit) в текущем сеансе не было фокусе искать это окно невозможно ..... проверял ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2007, 17:29 |
|
||
|
HDC и HWND обьекта как определить ?
|
|||
|---|---|---|---|
|
#18+
А по координатам обьекта можно найти его HDC (координаты можно вычислить CommandBars.Left+Controls().Left ???????????) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2007, 17:32 |
|
||
|
HDC и HWND обьекта как определить ?
|
|||
|---|---|---|---|
|
#18+
HOME_Xно если в обьекте Controls.Add(msoComboEdit) в текущем сеансе не было фокусе искать это окно невозможно ..... проверял ... скажите, что такое msoComboEdit? В Office 2003 такого нет. А у msoControlEdit hwnd есть и без получения фокуса .... проверял ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2007, 17:56 |
|
||
|
HDC и HWND обьекта как определить ?
|
|||
|---|---|---|---|
|
#18+
Файл - копия экрана Вторая панель сверху - это панель FTP_FOSS Второй Control слева - это обьект msoControlEdit (представлен константой = 2) Это из стандартного набора компонентов Office (неверно в исходном варинте Set Items = cmBars.Controls.Add( msoComboEdit ) читать как Set Items = cmBars.Controls.Add( msoControlEdit ) но значение константы правильное ) Private Const msoControlButton = 1 Private Const msoControlEdit = 2 Private Const msoControlDropdown = 3 Private Const msoControlActiveX = 22 Private Const msoComboNormal = 0 Private Const msoComboLabel = 1 Private Const msoButtonCaption = 2 Вошел в Outlook - запуск Cpy++ обьекта msoControlEdit не виден - рисунок 1 Теперь перевел фокус просто походил по обьектам панели (запуск Cpy++) Hwnd виден рисунок 2 Т.е эпизодическая инициализация (до востребованию).... Так базировать програмнный код не есть хорошо....... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2007, 19:00 |
|
||
|
|

start [/forum/topic.php?fid=60&msg=34303519&tid=2164567]: |
0ms |
get settings: |
11ms |
get forum list: |
20ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
86ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
64ms |
get tp. blocked users: |
2ms |
| others: | 238ms |
| total: | 444ms |

| 0 / 0 |
