Модераторы: Akina

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Перебор всех контролов формы 
:(
    Опции темы
efedron
Дата 23.8.2005, 13:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 135
Регистрация: 16.3.2005

Репутация: 4
Всего: 4



Не могу вспомнить, как можно перечислить все контролы, лежащие на форме, поочередно выполнив с ними какое-нть действие. Напр. мне надо получить их hWnd.
А если быть уж совсем точным, то на форме у меня лежит dhtml edit и мне нужно получить его hWnd (явным образом он свойства такого не имеет)
--------------------
Прежде чем совершить акт разрезания определенной материи целесообразно удостовериться в правильности всех произведенных измерений.
PM MAIL   Вверх
boevik
Дата 23.8.2005, 14:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1452
Регистрация: 31.5.2004
Где: Израиль

Репутация: 12
Всего: 35



Код

dim c as Control
For each c in Me.Controls
....
Next c



--------------------
Никогда не говори никогда
PM MAIL WWW   Вверх
efedron
Дата 24.8.2005, 07:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 135
Регистрация: 16.3.2005

Репутация: 4
Всего: 4



boevik
спасибо, но фокус с перебором не проходит.
Таким образом определить hWnd контрола DHTMLEdit не удается, как же это можно осуществить при запуске программы? smile
--------------------
Прежде чем совершить акт разрезания определенной материи целесообразно удостовериться в правильности всех произведенных измерений.
PM MAIL   Вверх
efedron
Дата 29.8.2005, 13:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 135
Регистрация: 16.3.2005

Репутация: 4
Всего: 4



ну где же вы, профессионалы?? на данный момент мне удалось яастично решить проблему таким образом: я получаю hwnd окна, находящегося под курсором мыши и специально навожу туда курсор. В этом случае все ок, но так не делать - это несерьезно, прошу помощи!!!
--------------------
Прежде чем совершить акт разрезания определенной материи целесообразно удостовериться в правильности всех произведенных измерений.
PM MAIL   Вверх
Exception
Дата 30.8.2005, 01:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 4525
Регистрация: 26.12.2004

Репутация: 7
Всего: 186



помещай dhtmlEdit в пикчербокс picContainer, и добавь код:
Код
Declare Function FindWindowExA Lib "user32" (ByVal hWndParent As Long, ByVal hWndChildAfter As Long, ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Sub Form_Load()
Dim h As Long
h = FindWindowExA(picContainer.hWnd, 0, vbNullString, vbNullString)
MsgBox h
End Sub

писал вслепую, проверь.
PM   Вверх
efedron
Дата 30.8.2005, 13:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 135
Регистрация: 16.3.2005

Репутация: 4
Всего: 4



Run-time error
не знаю какой хэндл в этом случае содержит h, но явно не хендл dhtmledit smile
--------------------
Прежде чем совершить акт разрезания определенной материи целесообразно удостовериться в правильности всех произведенных измерений.
PM MAIL   Вверх
Exception
Дата 30.8.2005, 16:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 4525
Регистрация: 26.12.2004

Репутация: 7
Всего: 186



с чего ты взял что не его? это точно должно сработать
Добавлено @ 16:43
с чего ты взял что не его? это точно должно сработать. а зах тебе его хэндл?
PM   Вверх
Guest
Дата 3.9.2005, 08:11 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Run-time error
лень код выкладывать, но пикчербокс содержит другой хендл, я проверил, а нужно мне это для того, чтобы послать окну dhtmledit сообщение WM_KEYDOWN (нажатие клавиши "End"), чтобы он прокрутился вниз.
  Вверх
Naghual
Дата 6.9.2005, 09:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1893
Регистрация: 15.5.2004
Где: Украина, Днепр

Репутация: 26
Всего: 49



smile

Удивляют меня эти гости.

Ему
Цитата(Guest @ 3.9.2005, 08:11)
лень код выкладывать


А вы отвечайте ему! Да еще и так, что бы все и сразу заработало.



--------------------
Я желаю всем Счастья!
PM ICQ Skype   Вверх
Mephisto
Дата 6.9.2005, 10:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Волкъ
***


Профиль
Группа: Завсегдатай
Сообщений: 1818
Регистрация: 27.8.2003
Где: Питер

Репутация: 2
Всего: 34



ГЫ. Прикольно. А ты уверен что не работет? Лично я думаю, должно работать. Покажи код!
PM   Вверх
Exception
Дата 6.9.2005, 10:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 4525
Регистрация: 26.12.2004

Репутация: 7
Всего: 186



а ты попробуй его дестройвиндов, можа он только на сендмессэдж не реагирует.
зы активикс с апи дело тёмное, активиксы иногда хвнд даже меняют.. ззы а SendKeys юзать не пробовал?
PM   Вверх
Mephisto
Дата 6.9.2005, 10:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Волкъ
***


Профиль
Группа: Завсегдатай
Сообщений: 1818
Регистрация: 27.8.2003
Где: Питер

Репутация: 2
Всего: 34



Цитата(Run @ 6.9.2005, 10:39)
можа он только на сендмессэдж не реагирует

А эт че возможно? Сообщения посылаются всегда и всегда обрабатываются. Нуна только знать куда отсылать. smile

PM   Вверх
Exception
Дата 6.9.2005, 11:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 4525
Регистрация: 26.12.2004

Репутация: 7
Всего: 186



активиксы не всегда корректно работают с апи ф-циями. всё возможно...
а вот код покажи, эфедрон
PM   Вверх
efedron
Дата 6.9.2005, 15:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 135
Регистрация: 16.3.2005

Репутация: 4
Всего: 4



Naghual
Цитата
Удивляют меня эти гости.

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

VERSION 5.00
Object = "{683364A1-B37D-11D1-ADC5-006008A5848C}#1.0#0"; "dhtmled.ocx"
Begin VB.Form Form1 
   Caption         =   "Form1"
   ClientHeight    =   4635
   ClientLeft      =   60
   ClientTop       =   345
   ClientWidth     =   4470
   LinkTopic       =   "Form1"
   ScaleHeight     =   4635
   ScaleWidth      =   4470
   StartUpPosition =   3  'Windows Default
   Begin VB.CommandButton Command2 
      Caption         =   "ПослатьСообщение"
      Height          =   615
      Left            =   2400
      TabIndex        =   6
      Top             =   3120
      Width           =   1575
   End
   Begin VB.TextBox Text3 
      Height          =   285
      Left            =   120
      TabIndex        =   5
      Top             =   2520
      Width           =   2175
   End
   Begin VB.TextBox Text2 
      Height          =   285
      Left            =   120
      TabIndex        =   4
      Top             =   3480
      Width           =   2175
   End
   Begin VB.Timer Timer1 
      Interval        =   1000
      Left            =   3960
      Top             =   3960
   End
   Begin VB.TextBox Text1 
      Height          =   285
      Left            =   120
      TabIndex        =   3
      Top             =   3120
      Width           =   2175
   End
   Begin VB.CommandButton Command1 
      Caption         =   "Send message to DHTMLEdit"
      Height          =   255
      Left            =   120
      TabIndex        =   2
      Top             =   2040
      Width           =   2775
   End
   Begin VB.PictureBox picContainer 
      BorderStyle     =   0  'None
      Height          =   1935
      Left            =   120
      ScaleHeight     =   1935
      ScaleWidth      =   3495
      TabIndex        =   0
      Top             =   120
      Width           =   3495
      Begin DHTMLEDLibCtl.DHTMLEdit DHTMLEdit1 
         Height          =   1815
         Left            =   0
         TabIndex        =   1
         Top             =   0
         Width           =   3495
         ActivateApplets =   0   'False
         ActivateActiveXControls=   0   'False
         ActivateDTCs    =   -1  'True
         ShowDetails     =   0   'False
         ShowBorders     =   0   'False
         Appearance      =   1
         Scrollbars      =   -1  'True
         ScrollbarAppearance=   1
         SourceCodePreservation=   -1  'True
         AbsoluteDropMode=   0   'False
         SnapToGrid      =   0   'False
         SnapToGridX     =   50
         SnapToGridY     =   50
         BrowseMode      =   -1  'True
         UseDivOnCarriageReturn=   0   'False
      End
   End
   Begin VB.Label Label1 
      Caption         =   "WindowFromPoint"
      Height          =   255
      Left            =   120
      TabIndex        =   7
      Top             =   2880
      Width           =   2295
   End
End
Attribute VB_Name = "Form1"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Private Declare Function FindWindowExA Lib "user32" (ByVal hWndParent As Long, ByVal hWndChildAfter As Long, ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Option Explicit
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Private Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long
Private Declare Function WindowFromPoint Lib "user32" (ByVal xPoint As Long, ByVal yPoint As Long) As Long
Private Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hWnd As Long, ByVal lpString As String, ByVal cch As Long) As Long

Private Const WM_CHAR = &H102
Private Const WM_KEYDOWN = &H100

Private Type POINTAPI
        x As Long
        y As Long
End Type

Dim h As Long

Private Sub Command1_Click()
SendMessage h, WM_KEYDOWN, 35, 0&
End Sub

Private Sub Command2_Click()
SendMessage CLng(Val(Text1.Text)), WM_KEYDOWN, 35, 0&

End Sub

Sub Form_Load()
h = FindWindowExA(picContainer.hWnd, 0, vbNullString, vbNullString)
DHTMLEdit1.LoadDocument "c:\boot.ini"
Text3.Text = h
End Sub

Private Sub Timer1_Timer()
Dim pCur As POINTAPI
Dim hWnd As Long
Dim sText As String
sText = String$(256, " ")
GetCursorPos pCur
hWnd = WindowFromPoint(pCur.x, pCur.y)
Text1.Text = hWnd
GetWindowText hWnd, sText, 255
Text2.Text = Trim$(sText)
End Sub

этот примерчик показывает, что dhtml реагирует на посылку ему сообщения, а переменная h содержит не его хендл.
--------------------
Прежде чем совершить акт разрезания определенной материи целесообразно удостовериться в правильности всех произведенных измерений.
PM MAIL   Вверх
Naghual
Дата 6.9.2005, 16:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1893
Регистрация: 15.5.2004
Где: Украина, Днепр

Репутация: 26
Всего: 49



А этот пример показывает как прикреплять файлы.
smile

Присоединённый файл ( Кол-во скачиваний: 4 )
Присоединённый файл  Naghual.zip 30,34 Kb


--------------------
Я желаю всем Счастья!
PM ICQ Skype   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "VB6"
Akina

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по VB обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • Используйте теги [code=vb][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | VB6 | Следующая тема »


 




[ Время генерации скрипта: 0.0557 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.