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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Потеря фокуса формой, Интерфейс 
:(
    Опции темы
Voldemar2004
Дата 18.11.2005, 19:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



При нажатии кнопки форма должна потерять фокус, как сделать?


--------------------
i_i 
(';') 
(V)

user posted image
PM MAIL   Вверх
darkart
Дата 18.11.2005, 21:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



SendMessage с WM_KILLFOCUS.
PM MAIL WWW ICQ Skype GTalk   Вверх
Voldemar2004
Дата 19.11.2005, 13:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Код
Option Explicit

Private Declare Function SendMessage Lib "user32" _
Alias "SendMessageA" _
(ByVal hwnd As Long, _
ByVal wMsg As Long, _
ByVal wParam As Long, _
ByVal lParam As Long) As Long

Private Declare Function FindWindow& Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String)
Private Declare Function FindWindowEx& Lib "user32" Alias "FindWindowExA" (ByVal hWndParrent As Long, ByVal hWndChildren As Long, ByVal lpClassName As String, ByVal lpWindowName As String)

Private Sub Command1_Click()
Dim sCaption As String, hW As String

Const WM_KILLFOCUS = &H8

sCaption = "Form1"
hW = FindWindow(vbNullString, sCaption)

' Как заставить работать эту строку:
Call SendMessage(hW, WM_KILLFOCUS, <ByVal???> , 1)

End Sub



Это сообщение отредактировал(а) Voldemar2004 - 19.11.2005, 13:10


--------------------
i_i 
(';') 
(V)

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


Эксперт
****


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

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



Насколько я знаю, WM_KILLFOCUS не убирает фокус, а используется виндой
для оповещения окна, что у него отбирают фокус. Чтобы убрать у формы фокус, придай его десктопу:
Код
Sub MySub()
Dim deskhw As Long
deskhw = GetDesktopWindow()
SetForegroundWindow deskhw
End Sub

Объявления API-функций я опустил, смотри в API Viewer'е
PM   Вверх
Voldemar2004
Дата 19.11.2005, 20:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Run-time error, + smile . Все, что ниже - переключает фокус с VB-программы на программу с указанным заголовком:
Код
Option Explicit

Private Declare Function SendMessage Lib "user32" _
Alias "SendMessageA" _
(ByVal hwnd As Long, _
ByVal wMsg As Long, _
ByVal wParam As Long, _
ByVal lParam As Long) As Long
Private Declare Function FindWindow& Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String)
Private Declare Function FindWindowEx& Lib "user32" Alias "FindWindowExA" (ByVal hWndParrent As Long, ByValhWndChildren As Long, ByVal lpClassName As String, ByVal lpWindowName As String)

Private Declare Function SetForegroundWindow _
Lib "user32" (ByVal hwnd As Long) As Long

Private Declare Function GetDesktopWindow _
Lib "user32" () As Long

Dim hw As String

Private Sub Command1_Click()
Dim sCaption As String ', hw As String
Const WM_KILLFOCUS = &H8

sCaption = "Программа для работы с БД (ДОС)" ' можно узнавать заголовок с помощью функции,
' но в моем случае хватит и этого

hw = FindWindow(vbNullString, sCaption)

MsgBox hw

MySub

End Sub

Sub MySub()
Dim deskhw As Long
deskhw = hw 'GetDesktopWindow()
SetForegroundWindow deskhw
End Sub
Я просто не знал про ф-цию SetForegroundWindow.


--------------------
i_i 
(';') 
(V)

user posted image
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "VB6"
Akina

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

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

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

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


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

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


 




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


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

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