3 волнующих меня вопроса...

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Саша_ОР
Обычный пользователь
Обычный пользователь
 
Сообщения: 66
Зарегистрирован: 08.01.2006 (Вс) 19:48

3 волнующих меня вопроса...

Сообщение Саша_ОР » 14.01.2006 (Сб) 13:13

Дамы и Господа, не сочтите меня через чур надоедливым, но у меня возникли 3 вопросика, на которые, я надеюсь, вы сможете найти ответ...

:arrow: Значит так, по-порядку:

Вопрос 1:
Как програмно перенести любой объект на форме Вперед или Назад?

Вопрос 2:
Как можно Создать форму в форме (например, я запускаю любое приложение оператором Shell и это приложение запускается в своем окне, но внутри моей формы и за пределы этой формы выйти не может)??? :?: :?: :?: :!:

Вопрос 3:
Как можно изменить яркость изображения в ImageBox или PictureBox?

Буду вам ОЧень Благодарен, если вы сможете мне помочь..... :D :D :D

Kiryusha
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 216
Зарегистрирован: 30.08.2005 (Вт) 10:56
Откуда: УР, Ижевск

Сообщение Kiryusha » 14.01.2006 (Сб) 13:41

1) <Объект>.ZOrder {вперед}
2) поиск рулит. Если не форуму то по статьям где-то я это видел
3) см вопрос 2.
Судебно-медицинское вскрытие показало, что чукча умер в
результате судебно-медицинского вскрытия.

Саша_ОР
Обычный пользователь
Обычный пользователь
 
Сообщения: 66
Зарегистрирован: 08.01.2006 (Вс) 19:48

Сообщение Саша_ОР » 14.01.2006 (Сб) 15:54

Большое спасибо Kiryusha ! :D
На ПЕРВЫЙ вопрос ответ есть:

Command1.ZOrder 1 'Перенести Назад
Command1.ZOrder 0 'Перенести Вперед

Но второй вопрос для меня имеет глобальное значение...

Kiryusha
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 216
Зарегистрирован: 30.08.2005 (Вт) 10:56
Откуда: УР, Ижевск

Сообщение Kiryusha » 14.01.2006 (Сб) 16:40

открыть другое приложение внутри своего...................
мда......................... Как то даже не знаю выполнимо ли это можно просто программно создать фому внутри своей но что бы открыть другую программу....... Не знаю.
Судебно-медицинское вскрытие показало, что чукча умер в
результате судебно-медицинского вскрытия.

Kovu
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 924
Зарегистрирован: 29.04.2005 (Пт) 17:38

Сообщение Kovu » 14.01.2006 (Сб) 18:54

Да нее достаточно найти окно твоей запущенной программы и приделать его SetParent'om к твоей форме :)
Если всё делать своими ручками, они скоро отвалятся !

Naked
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 207
Зарегистрирован: 27.10.2004 (Ср) 3:16
Откуда: Дальнегорск столица мира

Сообщение Naked » 14.01.2006 (Сб) 19:06

ответ на 3 вопрос
самый легкий способ использовать
Public Declare Function SetColorAdjustment Lib "gdi32" Alias "SetColorAdjustment" (ByVal hdc As Long, lpca As COLORADJUSTMENT) As Long

Саша_ОР
Обычный пользователь
Обычный пользователь
 
Сообщения: 66
Зарегистрирован: 08.01.2006 (Вс) 19:48

Сообщение Саша_ОР » 15.01.2006 (Вс) 19:17

Naked писал(а):ответ на 3 вопрос
самый легкий способ использовать
Public Declare Function SetColorAdjustment Lib "gdi32" Alias "SetColorAdjustment" (ByVal hdc As Long, lpca As COLORADJUSTMENT) As Long

Гм... чет не получается, говорит ошибка компиляции. А эта функция работает лишь в ПикчерсБокс?

Саша_ОР
Обычный пользователь
Обычный пользователь
 
Сообщения: 66
Зарегистрирован: 08.01.2006 (Вс) 19:48

Сообщение Саша_ОР » 15.01.2006 (Вс) 19:27

Kovu писал(а):Да нее достаточно найти окно твоей запущенной программы и приделать его SetParent'om к твоей форме :)

SetParent'om это как? У меня была идея наложить форму на форму из вне, но тут есть две проблемы (вычислить положение формы не сложно, координаты в файле конфигураций). Проблема в том, что родительскую форму можно перемещать а это значит что вторая форма будет стоять на месте и они будут находиться по отдельности. Вторая в том, что вторая форма должна быть впереди родительской, иначе она просто провалется под нее... :cry:

Kovu
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 924
Зарегистрирован: 29.04.2005 (Пт) 17:38

Сообщение Kovu » 15.01.2006 (Вс) 21:34

SetParent'om это так, что сначала ты находишь нужное окно через FindWindow , а потом применяешь к полученному хэндлу SetParent
Если всё делать своими ручками, они скоро отвалятся !

Саша_ОР
Обычный пользователь
Обычный пользователь
 
Сообщения: 66
Зарегистрирован: 08.01.2006 (Вс) 19:48

Сообщение Саша_ОР » 15.01.2006 (Вс) 23:00

Kovu писал(а):SetParent'om это так, что сначала ты находишь нужное окно через FindWindow , а потом применяешь к полученному хэндлу SetParent

Kovu а не мог бы показать кусочек кода, а то мне сложно понять на словах... Буду очень Благодарен!!! :)

RUSYA
Обычный пользователь
Обычный пользователь
 
Сообщения: 84
Зарегистрирован: 22.07.2005 (Пт) 20:17
Откуда: Харьков

Сообщение RUSYA » 15.01.2006 (Вс) 23:08

Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As Long, ByVal lpWindowName As Long) As Long
Private Declare Function GetParent Lib "user32" (ByVal hwnd As Long) As Long
Private Declare Function SetParent Lib "user32" (ByVal hWndChild As Long, ByVal hWndNewParent As Long) As Long
Private Declare Function GetWindowThreadProcessId Lib "user32" (ByVal hwnd As Long, lpdwProcessId As Long) As Long
Private Declare Function GetWindow Lib "user32" (ByVal hwnd As Long, ByVal wCmd As Long) As Long
Private Declare Function LockWindowUpdate Lib "user32" (ByVal hwndLock As Long) As Long
Private Declare Function GetDesktopWindow Lib "user32" () As Long
Private Declare Function DestroyWindow Lib "user32" (ByVal hwnd As Long) As Long
Private Declare Function TerminateProcess Lib "kernel32" (ByVal hProcess As Long, ByVal uExitCode As Long) As Long
Private Declare Function GetCurrentProcess Lib "kernel32" () As Long
Private Declare Function Putfocus Lib "user32" Alias "SetFocus" (ByVal hwnd As Long) As Long
Private Declare Function ShowWindow Lib "user32" (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long

Const GW_HWNDNEXT = 2
Dim mWnd As Long

Function InstanceToWnd(ByVal target_pid As Long) As Long
Dim test_hwnd As Long, test_pid As Long, test_thread_id As Long
test_hwnd = FindWindow(ByVal 0&, ByVal 0&)
Do While test_hwnd <> 0
If GetParent(test_hwnd) = 0 Then
test_thread_id = GetWindowThreadProcessId(test_hwnd, test_pid)
If test_pid = target_pid Then
InstanceToWnd = test_hwnd
Exit Do
End If
End If
test_hwnd = GetWindow(test_hwnd, GW_HWNDNEXT)
Loop

End Function

Private Sub Form_Unload(Cancel As Integer)
DestroyWindow mWnd
TerminateProcess GetCurrentProcess, 0
End Sub


Private Sub RunExe(File$)
Dim Pid As Long
LockWindowUpdate GetDesktopWindow
Pid = Shell(File$, vbNormalFocus)
If Pid = 0 Then MsgBox "Error starting the app"
mWnd = InstanceToWnd(Pid)
SetParent mWnd, Me.hwnd
Putfocus mWnd
LockWindowUpdate False
End Sub

Private Sub Form_Load()
RunExe "C:\Windows\System32\Calc.exe"
End Sub
А как оно на самом деле - Х.З. !

vvs_adm
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1492
Зарегистрирован: 03.02.2005 (Чт) 3:45
Откуда: оттуда ;)

Сообщение vvs_adm » 15.01.2006 (Вс) 23:37

На лучше попроще :) Для начала ...
Вложения
SetParent.rar
(1.94 Кб) Скачиваний: 47
Никогда не откладывай на завтра то, что можно ... отложить на послезавтра!

Naked
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 207
Зарегистрирован: 27.10.2004 (Ср) 3:16
Откуда: Дальнегорск столица мира

Сообщение Naked » 16.01.2006 (Пн) 5:01

Саша_ОР писал(а):Гм... чет не получается, говорит ошибка компиляции. А эта функция работает лишь в ПикчерсБокс?


И на других контролах, где есть hdc

вот пример использования
http://www.vb.kiev.ua/ref/w32api/showdo ... tchbltmode

и в MSDN поищи COLORADJUSTMENT, там написаны значения переменных

Саша_ОР
Обычный пользователь
Обычный пользователь
 
Сообщения: 66
Зарегистрирован: 08.01.2006 (Вс) 19:48

Сообщение Саша_ОР » 16.01.2006 (Пн) 18:28

Спасибо всем, вы все просто профессионалы, все работает даже лучше, чем я думал, спасибо всем!!! Мне всегда очень хотелось знать ответы на эти 3 вопроса... :D :D :D


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: AhrefsBot и гости: 180

    TopList