![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
|
|
#1
|
|||
|
|||
|
Здравствуйте! Недавно возник вопрос, поэтому прошу вашей помощи. Есть у меня моя программа для обработки звука и недавно я откопал у себя еще одну небольшую программу: Music Spectrum Analyser. Она в формате dpr вся, без формы, но скомпилированный exe имеет нормальную красивую форму. Я бы хотел интегрировать ее в мою программу, основанную на формах и т.д. Но не знаю как. Единое, что я смог сделать - это запускать ее кнопкой вот так:
Код:
procedure TForm1.sButton1Click(Sender: TObject);
begin
windows.WinExec('histogram.exe',windows.SW_NORMAL);
end;А хотелось бы, чтобы она была в форме. Есть ли такая возможность и как это осуществить? |
|
#2
|
||||
|
||||
|
Решение "в лоб" - вручную поменять стиль окна этой проги на "окно без границ", поставить парентом своё и растянуть на все свое окно. Как - см. WinAPI, SetWindowLong, ...
Решение не в лоб - разобраться в коде этой проги и внедрить в свой код. |
| Этот пользователь сказал Спасибо 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; |
|
#5
|
||||
|
||||
|
Ничего у меня там сложного нет. Рисуется на трёх битмапах, затем они копируются на канвас окна.
|
| Этот пользователь сказал Спасибо angvelem за это полезное сообщение: | ||
Dmitry_DM (25.11.2012)
| ||
|
#6
|
|||
|
|||
|
Цитата:
![]() |
|
#7
|
||||
|
||||
|
Цитата:
|