| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197 | #include <windows.h>#include "api.h"#include "resource.h"#include "../Winamp/wa_ipc.h"#include "../Winamp/in2.h"extern In_Module mod;			// the output module (filled in near the bottom of this file)static char app_name[] = "Nullsoft NSV Decoder2";//char config_http_proxynonport80=1;int config_padtag=1024;int config_bufms=10000;int config_prebufms=2000;int config_underunbuf=3000;int config_bufms_f=1000;int config_prebufms_f=1000;int config_underunbuf_f=1000;int config_vidoffs=0;int config_precseek=3;int config_subtitles=1;void config_write();char INI_FILE[512] = {0};static int _r_i(char *name, int def){	if (!_strnicmp(name,"config_",7)) name += 7;	return GetPrivateProfileIntA(app_name,name,def,INI_FILE);}#define RI(x) (( x ) = _r_i(#x,( x )))static void _w_i(char *name, int d){	char str[120] = {0};	wsprintfA(str,"%d",d);	if (!_strnicmp(name,"config_",7)) name += 7;	WritePrivateProfileStringA(app_name,name,str,INI_FILE);}#define WI(x) _w_i(#x,( x ))static void _r_s(char *name,char *data, int mlen){	char buf[2048] = {0};	strncpy(buf, data, 2048);	if (!_strnicmp(name,"config_",7)) name += 7;	GetPrivateProfileStringA(app_name,name,buf,data,mlen,INI_FILE);}#define RS(x) (_r_s(#x,x,sizeof(x)))static void _w_s(char *name, char *data){	if (!_strnicmp(name,"config_",7)) name += 7;	WritePrivateProfileStringA(app_name,name,data,INI_FILE);}#define WS(x) (_w_s(#x,x))static void config_init(){char *p;	if (mod.hMainWindow &&		(p = (char *)SendMessageA(mod.hMainWindow, WM_WA_IPC, 0, IPC_GETINIFILE))		&& p!= (char *)1)	{		strncpy(INI_FILE, p, MAX_PATH);	}	else	{		GetModuleFileNameA(NULL,INI_FILE,sizeof(INI_FILE));		p=INI_FILE+strlen(INI_FILE);		while (p >= INI_FILE && *p != '.') p--;		strcpy(++p,"ini");	}}static INT_PTR CALLBACK configProc(HWND hwndDlg, UINT uMsg, WPARAM wParam,LPARAM lParam){  switch (uMsg)  {    case WM_INITDIALOG:      // show config      SetDlgItemInt(hwndDlg,IDC_BUF1,config_bufms,FALSE);      SetDlgItemInt(hwndDlg,IDC_BUF2,config_prebufms,FALSE);      SetDlgItemInt(hwndDlg,IDC_BUF3,config_underunbuf,FALSE);      SetDlgItemInt(hwndDlg,IDC_BUF4,config_bufms_f,FALSE);      SetDlgItemInt(hwndDlg,IDC_BUF5,config_prebufms_f,FALSE);      SetDlgItemInt(hwndDlg,IDC_BUF6,config_underunbuf_f,FALSE);      SetDlgItemInt(hwndDlg,IDC_OFFS,config_vidoffs,TRUE);      SetDlgItemInt(hwndDlg,IDC_TAGPAD,config_padtag,FALSE);      if (config_precseek&1)CheckDlgButton(hwndDlg,IDC_CHECK1,BST_CHECKED);      if (config_precseek&2)CheckDlgButton(hwndDlg,IDC_CHECK2,BST_CHECKED);	  if (config_subtitles)CheckDlgButton(hwndDlg,IDC_CHECK3,BST_CHECKED);//      if (!config_http_proxynonport80) CheckDlgButton(hwndDlg,IDC_CHECK5,BST_CHECKED);    return 0;    case WM_COMMAND:      switch (LOWORD(wParam))      {        case IDC_CHECK1:        case IDC_CHECK2:          config_precseek=(IsDlgButtonChecked(hwndDlg,IDC_CHECK1)?1:0)|                          (IsDlgButtonChecked(hwndDlg,IDC_CHECK2)?2:0);        break;		case IDC_CHECK3:			config_subtitles=(IsDlgButtonChecked(hwndDlg,IDC_CHECK3)?1:0);			break;        case IDC_OFFS:          if (HIWORD(wParam) == EN_CHANGE)          {            BOOL t;            config_vidoffs=GetDlgItemInt(hwndDlg,IDC_OFFS,&t,TRUE);          }        break;        case IDCANCEL: EndDialog(hwndDlg,0); break;        case IDOK:           // save config//          config_http_proxynonport80=!IsDlgButtonChecked(hwndDlg,IDC_CHECK5);          {            BOOL t;            config_bufms=GetDlgItemInt(hwndDlg,IDC_BUF1,&t,FALSE);            if (config_bufms < 100) config_bufms=100;            if (config_bufms > 100000) config_bufms=100000;            config_prebufms=GetDlgItemInt(hwndDlg,IDC_BUF2,&t,FALSE);            if (config_prebufms < 100) config_prebufms=100;            if (config_prebufms > config_bufms) config_prebufms=config_bufms;            config_underunbuf=GetDlgItemInt(hwndDlg,IDC_BUF3,&t,FALSE);            if (config_underunbuf < 100) config_underunbuf=100;            if (config_underunbuf > config_bufms) config_underunbuf=config_bufms;            config_bufms_f=GetDlgItemInt(hwndDlg,IDC_BUF4,&t,FALSE);            if (config_bufms_f < 100) config_bufms_f=100;            if (config_bufms_f > 100000) config_bufms_f=100000;            config_prebufms_f=GetDlgItemInt(hwndDlg,IDC_BUF5,&t,FALSE);            if (config_prebufms_f < 100) config_prebufms_f=100;            if (config_prebufms_f > config_bufms_f) config_prebufms_f=config_bufms_f;            config_underunbuf_f=GetDlgItemInt(hwndDlg,IDC_BUF6,&t,FALSE);            if (config_underunbuf_f < 100) config_underunbuf_f=100;            if (config_underunbuf_f > config_bufms_f) config_underunbuf_f=config_bufms_f;            config_vidoffs=GetDlgItemInt(hwndDlg,IDC_OFFS,&t,TRUE);            config_padtag=GetDlgItemInt(hwndDlg,IDC_TAGPAD,&t,FALSE);          }          config_write();          EndDialog(hwndDlg,1);         break;      }    break;  }  return 0;}void config(HWND hwndParent){	WASABI_API_DIALOGBOXW(IDD_DIALOG1,hwndParent,configProc);}void config_read(){	config_init();	RI(config_bufms);	RI(config_prebufms);	RI(config_underunbuf);	RI(config_bufms_f);	RI(config_prebufms_f);	RI(config_underunbuf_f);	RI(config_vidoffs);	RI(config_padtag);//  RI(allow_uvox);//	RI(config_http_proxynonport80);	RI(config_precseek);	RI(config_subtitles);}void config_write(){	WI(config_bufms);	WI(config_prebufms);	WI(config_underunbuf);	WI(config_bufms_f);	WI(config_prebufms_f);	WI(config_underunbuf_f);	WI(config_vidoffs);	WI(config_padtag);	WI(config_precseek);	WI(config_subtitles);//  WI(allow_uvox);//	WI(config_http_proxynonport80);}
 |