|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
Объеденение программ
Здравствуйте! Недавно возник вопрос, поэтому прошу вашей помощи. Есть у меня моя программа для обработки звука и недавно я откопал у себя еще одну небольшую программу: Music Spectrum Analyser. Она в формате dpr вся, без формы, но скомпилированный exe имеет нормальную красивую форму. Я бы хотел интегрировать ее в мою программу, основанную на формах и т.д. Но не знаю как. Единое, что я смог сделать - это запускать ее кнопкой вот так:
Код:
procedure TForm1.sButton1Click(Sender: TObject); begin windows.WinExec('histogram.exe',windows.SW_NORMAL); end; А хотелось бы, чтобы она была в форме. Есть ли такая возможность и как это осуществить? |
#2
|
||||
|
||||
Решение "в лоб" - вручную поменять стиль окна этой проги на "окно без границ", поставить парентом своё и растянуть на все свое окно. Как - см. WinAPI, SetWindowLong, ...
Решение не в лоб - разобраться в коде этой проги и внедрить в свой код. jmp $ ; Happy End! The Cake Is A Lie. |
Этот пользователь сказал Спасибо Bargest за это полезное сообщение: | ||
Dmitry_DM (25.11.2012)
|
#3
|
|||
|
|||
Цитата:
|
#4
|
||||
|
||||
Код:
procedure UpdateSpectrum(uTimerID, uMsg, dwUser, dw1, dw2 : Integer); stdcall; begin if isPlayed then begin OnDrawData; OnDrawBar; OnDrawWave; end; end; UPD: Код:
MoveToEx(BarBitmap.DC, I * (ColWidth + 2) + Offset, BarBitmap.aHeight - fftPeaks[i], NIL); LineTo(BarBitmap.DC, I * (ColWidth + 2) + ColWidth + Offset, BarBitmap.aHeight - fftPeaks[i]); SetRect(aRect, I * (ColWidth + 2) + Offset, BarBitmap.aHeight - FFTFallOff[i], I * (ColWidth + 2) + ColWidth + Offset, BarBitmap.aHeight); SetRect(bRect, aRect.Left, BarBitmap.aHeight, aRect.Right, BarBitmap.aHeight - 1); J := aRect.Bottom - aRect.Top; repeat B := 0; R := 255 div BarBitmap.aHeight * (aRect.Bottom - aRect.Top - J); G := 256 - R; FillRect(BarBitmap.DC, bRect, RGB(R, G, B)); OffsetRect(bRect, 0, -1); dec(J); until J < 0; jmp $ ; Happy End! The Cake Is A Lie. |
#5
|
||||
|
||||
Ничего у меня там сложного нет. Рисуется на трёх битмапах, затем они копируются на канвас окна.
Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
Этот пользователь сказал Спасибо angvelem за это полезное сообщение: | ||
Dmitry_DM (25.11.2012)
|
#6
|
|||
|
|||
Цитата:
|
#7
|
||||
|
||||
Цитата:
Я не понял Вашего вопроса, но всё же Вам на него отвечу! |