Files
2026-06-13 00:10:11 +08:00

130 lines
3.9 KiB
C++

//---------------------------------------------------------------------------
#ifndef MicSetFormUnitH
#define MicSetFormUnitH
//---------------------------------------------------------------------------
#include <System.Classes.hpp>
#include <Vcl.Controls.hpp>
#include <Vcl.StdCtrls.hpp>
#include <Vcl.Forms.hpp>
#include <Vcl.ExtCtrls.hpp>
#include <Vcl.Imaging.pngimage.hpp>
#include "PNGButton.hpp"
#include <Vcl.Imaging.jpeg.hpp>
#include <Vcl.Graphics.hpp>
#include <Vcl.ComCtrls.hpp>
#include "PopMenuUnit.h"
//---------------------------------------------------------------------------
#define MB_CHECKED 0x100
#define MB_UNCHECKED 0x200
typedef struct tagDeviceInfo{
int iDevice;
char name[256]; // description
DWORD flags;
tagDeviceInfo(){
memset( this, 0, sizeof(tagDeviceInfo) );
}
tagDeviceInfo( tagDeviceInfo* src ){
memcpy( this, src, sizeof(tagDeviceInfo) );
}
} IO_DEVICE_INFO;
class TMicSetForm : public TForm
{
__published: // IDE-managed Components
TImage *m_imgBk;
TPNGButton *m_btnOk;
TPNGButton *m_btnCancel;
TLabel *m_lblRecDevOrOutput;
TComboBox *m_cbRecDevOrOutput;
TLabel *m_lblVolume;
TTrackBar *m_tbVolume;
TPaintBox *m_pbAutoCheck;
TLabel *m_lblAutoAdjust;
TLabel *m_lblHintMsg;
TLabel *m_lblCaption;
TImage *m_imgLog;
TPNGButton *m_btnClose;
TComboBox *m_cbInput;
TLabel *m_lblInput;
TLabel *m_lblHint;
TLabel *m_lblLatency;
TLabel *m_lblLatencyTime;
TLabel *m_lblMoniter;
TPaintBox *m_pbMoniter;
TLabel *m_lblOutput;
TComboBox *m_cbPlayDev;
TLabel *m_lblASIO;
TLabel *m_lblType;
TRadioButton *m_rbCommon;
TRadioButton *m_rbWASAPI;
TRadioButton *m_rbASIO;
void __fastcall FormKeyDown(TObject *Sender, WORD &Key, TShiftState Shift);
void __fastcall CheckPaint(TObject *Sender);
void __fastcall CheckClick(TObject *Sender);
// void __fastcall CheckMessageClick(TObject *Sender);
// void __fastcall CancelClick(TObject *Sender);
void __fastcall OkClick(TObject *Sender);
void __fastcall FormCreate(TObject *Sender);
void __fastcall RecDevOrOutputChange(TObject *Sender);
void __fastcall VolumeChange(TObject *Sender);
void __fastcall InputChange(TObject *Sender);
void __fastcall PlayDevChange(TObject *Sender);
// void __fastcall ASIOClick(TObject *Sender);
void __fastcall FormClose(TObject *Sender, TCloseAction &Action);
void __fastcall ASIOMouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y);
void __fastcall DeviceTypeClick(TObject *Sender);
private: // User declarations
TBitmap * m_pImgCheck;
TTimer *m_pTimerLatency;
bool m_bAutoAdjust,
m_bMoniter;
/* int m_iCurrPlaybackDevice, m_iCurrOutput,
m_iCurrRecordDevice, m_iCurrInput;
int m_iASIOStart;
bool m_bASIO;
*/
TPopMenu *m_PopupMenu; //µ¯³ö²Ëµ¥
IO_DEVICE_INFO m_aPbDevs[20], m_aRcDevs[20];
int m_iCurrPlaybackDevice, m_iCurrOutput,
m_iCurrRecordDevice, m_iCurrInput;
vector<IO_DEVICE_INFO*> m_aCommonPb, m_aCommonRc,
m_aWasapiPb, m_aWasapiRc,
m_aAsioPb, m_aMidiRc;
void ReloadPlayDev();
void ReloadRecDev();
void ReloadOutput();
void ReloadInput();
void BeginRecordTest( bool bStart=true );
void ShowErrorMessage( int err );
void __fastcall DoShowPanel(TObject* Sender);
void __fastcall DoRestart(TObject* Sender);
void __fastcall LatencyTimerProc(TObject* Sender);
MESSAGE void __fastcall WMNCHitTest(TWMNCHitTest &Msg);
MESSAGE void __fastcall UMRecordVolJust(TMessage &Message);
BEGIN_MESSAGE_MAP
MESSAGE_HANDLER(WM_NCHITTEST, TWMNCHitTest, WMNCHitTest)
MESSAGE_HANDLER(MSG_RECORD_VOLJUST, TMessage, UMRecordVolJust)
END_MESSAGE_MAP(TForm)
public: // User declarations
__fastcall TMicSetForm(TComponent* Owner);
__fastcall ~TMicSetForm();
// void _fastcall SetCheckMessage( String strMessage );
int __fastcall ShowMessage( const String AMessage, int AType=MB_ICONINFORMATION|MB_OK );
};
//---------------------------------------------------------------------------
extern PACKAGE TMicSetForm *MicSetForm;
//---------------------------------------------------------------------------
#endif