⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 w32g_subwin.c

📁 linux上播放midi音乐,但是要一些设置.可网上查找. 软件名称: TiMidity++-2.13.0.tar
💻 C
📖 第 1 页 / 共 4 页
字号:
	}}#define BUFFER_SIZE (1024*64)static void DocWndSetText(char *text, int text_size){	char buffer[BUFFER_SIZE];	int buffer_size = BUFFER_SIZE;	if(!IsWindow(hDocWnd) || !DocWndFlag)		return;	if(DocWndInfoLock()==FALSE)		return;//	Edit_SetText(GetDlgItem(hDocWnd,IDC_EDIT),text);	DocWndConvertText(text,text_size,buffer,buffer_size);	Edit_SetText(GetDlgItem(hDocWnd,IDC_EDIT),buffer);	DocWndInfoUnLock();}static void DocWndSetInfo(char *info, char *filename){	int buffer_size = BUFFER_SIZE;	if(!IsWindow(hDocWnd) || !DocWndFlag)		return;	if(DocWndInfoLock()==FALSE)		return;	Edit_SetText(GetDlgItem(hDocWnd,IDC_EDIT_INFO),info);	Edit_SetText(GetDlgItem(hDocWnd,IDC_EDIT_FILENAME),filename);	DocWndInfoUnLock();}// *.doc *.txt *.hed archive#*.doc archive#*.txt archive#*.hed static void DocWndInfoInit(void){//	DocWndInfo.hMutex = NULL;//	DocWndInfo.hMutex = CreateMutex(NULL,TRUE,NULL);	DocWndInfo.DocFileCur = 0;	DocWndInfo.DocFileMax = 0;	DocWndInfo.Text = NULL;	DocWndInfo.TextSize = 0;	EnableWindow(GetDlgItem(hDocWnd,IDC_BUTTON_PREV),FALSE);	EnableWindow(GetDlgItem(hDocWnd,IDC_BUTTON_NEXT),FALSE);//	if(DocWndInfo.hMutex!=NULL)//		DocWndInfoUnLock();}// Success -> TRUE   Failure -> FALSE static int DocWndInfoLock(void){#if 0	DWORD dwRes;	if(DocWndInfo.hMutex==NULL)		return FALSE;	dwRes = WaitForSingleObject(DocWndInfo.hMutex,10000);	if(dwRes==WAIT_OBJECT_0	|| dwRes==WAIT_ABANDONED)		return TRUE;	else		return FALSE;#else	return TRUE;#endif}static void DocWndInfoUnLock(void){//	ReleaseMutex(DocWndInfo.hMutex);}void DocWndInfoReset(void){	if(DocWndInfoLock()==FALSE)		return;	DocWndInfo.DocFileCur = 0;	DocWndInfo.DocFileMax = 0;	if(DocWndInfo.Text!=NULL){		free(DocWndInfo.Text);		DocWndInfo.Text = NULL;	}	DocWndInfo.TextSize = 0;	DocWndSetInfo("","");	DocWndSetText("",0);// end:	DocWndInfoUnLock();}void DocWndAddDocFile(char *filename){	struct timidity_file *tf = open_file(filename,0,0);#ifdef W32GUI_DEBUGPrintfDebugWnd("DocWndAddDocFile <- [%s]\n",filename);#endif	if(tf==NULL)		return;	close_file(tf);	if(DocWndInfoLock()==FALSE)		return;	if(DocWndInfo.DocFileMax>=DOCWND_DOCFILEMAX-1)		goto end;	DocWndInfo.DocFileMax++;	strncpy(DocWndInfo.DocFile[DocWndInfo.DocFileMax-1],filename,MAXPATH);	DocWndInfo.DocFile[DocWndInfo.DocFileMax-1][MAXPATH-1] = '\0';	if(DocWndInfo.DocFileCur==1)		EnableWindow(GetDlgItem(hDocWnd,IDC_BUTTON_PREV),FALSE);	else		EnableWindow(GetDlgItem(hDocWnd,IDC_BUTTON_PREV),TRUE);	if(DocWndInfo.DocFileCur==DocWndInfo.DocFileMax)		EnableWindow(GetDlgItem(hDocWnd,IDC_BUTTON_NEXT),FALSE);	else		EnableWindow(GetDlgItem(hDocWnd,IDC_BUTTON_NEXT),TRUE);#ifdef W32GUI_DEBUGPrintfDebugWnd("DocWndAddDocFile -> (%d)[%s]\n",DocWndInfo.DocFileMax-1,DocWndInfo.DocFile[DocWndInfo.DocFileMax-1]);#endifend:	DocWndInfoUnLock();}void DocWndSetMidifile(char *filename){	char buffer[MAXPATH+10];	char *p;	if(DocWndInfoLock()==FALSE)		return;	strncpy(buffer,filename,MAXPATH-1);	buffer[MAXPATH-1] = '\0';	p = strrchr(buffer,'.');	if(p==NULL)		goto end;	*p = '\0';	strcat(buffer,".txt");	DocWndAddDocFile(buffer);	*p = '\0';	strcat(buffer,".doc");	DocWndAddDocFile(buffer);	*p = '\0';	strcat(buffer,".hed");	DocWndAddDocFile(buffer);	p = strrchr(buffer,'#');	if(p==NULL)		goto end;	*p = '\0';	strcat(buffer,"readme.txt");	DocWndAddDocFile(buffer);	*p = '\0';	strcat(buffer,"readme.1st");	DocWndAddDocFile(buffer);	*p = '\0';	strcat(buffer,"壧帉.txt");	DocWndAddDocFile(buffer);end:	DocWndInfoUnLock();}#define DOCWNDDOCSIZEMAX (64*1024)void DocWndReadDoc(int num){	struct timidity_file *tf;	if(DocWndInfoLock()==FALSE)		return;	if(num<1)		num = 1;	if(num>DocWndInfo.DocFileMax)		num = DocWndInfo.DocFileMax;	if(num==DocWndInfo.DocFileCur)		goto end;	DocWndInfo.DocFileCur = num;	tf = open_file(DocWndInfo.DocFile[DocWndInfo.DocFileCur-1],1,10);	if(tf==NULL)		goto end;	if(DocWndInfo.Text!=NULL){		free(DocWndInfo.Text);		DocWndInfo.Text = NULL;	}	DocWndInfo.Text = (char *)safe_malloc(sizeof(char)*DOCWNDDOCSIZEMAX);	DocWndInfo.Text[0] = '\0';	DocWndInfo.TextSize = tf_read(DocWndInfo.Text,1,DOCWNDDOCSIZEMAX-1,tf);	DocWndInfo.Text[DocWndInfo.TextSize] = '\0';	close_file(tf);	{		char info[1024];		char *filename;		char *p1, *p2, *p3;		p1 = DocWndInfo.DocFile[DocWndInfo.DocFileCur-1];		p2 = pathsep_strrchr(p1);		p3 = strrchr(p1,'#');		if(p3!=NULL){			sprintf(info,"(%02d/%02d) %s",DocWndInfo.DocFileCur,DocWndInfo.DocFileMax,p3+1);			filename = p2 + 1;		} else if(p2!=NULL){			sprintf(info,"(%02d/%02d) %s",DocWndInfo.DocFileCur,DocWndInfo.DocFileMax,p2+1);			filename = p2 + 1;		} else {			sprintf(info,"(%02d/%02d) %s",DocWndInfo.DocFileCur,DocWndInfo.DocFileMax,p1+1);			filename = p1;		}		DocWndSetInfo(info,filename);	}	DocWndSetText(DocWndInfo.Text,DocWndInfo.TextSize);end:	if(DocWndInfo.DocFileCur==1)		EnableWindow(GetDlgItem(hDocWnd,IDC_BUTTON_PREV),FALSE);	else		EnableWindow(GetDlgItem(hDocWnd,IDC_BUTTON_PREV),TRUE);	if(DocWndInfo.DocFileCur==DocWndInfo.DocFileMax)		EnableWindow(GetDlgItem(hDocWnd,IDC_BUTTON_NEXT),FALSE);	else		EnableWindow(GetDlgItem(hDocWnd,IDC_BUTTON_NEXT),TRUE);	DocWndInfoUnLock();}void DocWndReadDocNext(void){	int num;	if(DocWndInfoLock()==FALSE)		return;	num = DocWndInfo.DocFileCur + 1;	if(num>DocWndInfo.DocFileMax)		num = DocWndInfo.DocFileMax;	DocWndReadDoc(num);	DocWndInfoUnLock();}void DocWndReadDocPrev(void){	int num;	if(DocWndInfoLock()==FALSE)		return;	num = DocWndInfo.DocFileCur - 1;	if(num<1)		num = 1;	DocWndReadDoc(num);	DocWndInfoUnLock();}void PutsDocWnd(char *str){	HWND hwnd;	if(!IsWindow(hDocWnd) || !DocWndFlag)		return;	hwnd = GetDlgItem(hDocWnd,IDC_EDIT);	PutsEditCtlWnd(hwnd,str);}void PrintfDocWnd(char *fmt, ...){	HWND hwnd;	va_list ap;	if(!IsWindow(hDocWnd) || !DocWndFlag)		return;	hwnd = GetDlgItem(hDocWnd,IDC_EDIT);	va_start(ap, fmt);	VprintfEditCtlWnd(hwnd,fmt,ap);	va_end(ap);}void ClearDocWnd(void){	HWND hwnd;	if(!IsWindow(hDocWnd))		return;	hwnd = GetDlgItem(hDocWnd,IDC_EDIT);	ClearEditCtlWnd(hwnd);}//****************************************************************************// List Search Dialog#define ListSearchStringMax 256static char ListSearchString[ListSearchStringMax];BOOL CALLBACK ListSearchWndProc(HWND hwnd, UINT uMess, WPARAM wParam, LPARAM lParam);void InitListSearchWnd(HWND hParentWnd){	strcpy(ListSearchString,"");	if (hListSearchWnd != NULL) {		DestroyWindow(hListSearchWnd);		hListSearchWnd = NULL;	}	switch(PlayerLanguage){	case LANGUAGE_JAPANESE:		hListSearchWnd = CreateDialog			(hInst,MAKEINTRESOURCE(IDD_DIALOG_ONE_LINE),hParentWnd,ListSearchWndProc);		break;	default:	case LANGUAGE_ENGLISH:		hListSearchWnd = CreateDialog			(hInst,MAKEINTRESOURCE(IDD_DIALOG_ONE_LINE_EN),hParentWnd,ListSearchWndProc);		break;	}	ShowWindow(hListSearchWnd,SW_HIDE);	UpdateWindow(hListSearchWnd);}#define ListSearchStringBuffSize 1024*2BOOL CALLBACKListSearchWndProc(HWND hwnd, UINT uMess, WPARAM wParam, LPARAM lParam){	switch (uMess){	case WM_INITDIALOG:		switch(PlayerLanguage){		case LANGUAGE_JAPANESE:			SendMessage(hwnd,WM_SETTEXT,0,(LPARAM)"僾儗僀儕僗僩偺専嶕");			SendMessage(GetDlgItem(hwnd,IDC_STATIC_HEAD),WM_SETTEXT,0,(LPARAM)"専嶕僉乕儚乕僪傪擖傟偰偔偩偝偄丅");			SendMessage(GetDlgItem(hwnd,IDC_STATIC_TAIL),WM_SETTEXT,0,(LPARAM)"");			SendMessage(GetDlgItem(hwnd,IDC_BUTTON_1),WM_SETTEXT,0,(LPARAM)"専嶕");			SendMessage(GetDlgItem(hwnd,IDC_BUTTON_2),WM_SETTEXT,0,(LPARAM)"師傪専嶕");			SendMessage(GetDlgItem(hwnd,IDC_BUTTON_3),WM_SETTEXT,0,(LPARAM)"暵偠傞");			break;		default:		case LANGUAGE_ENGLISH:			SendMessage(hwnd,WM_SETTEXT,0,(LPARAM)"Playlist Search");			SendMessage(GetDlgItem(hwnd,IDC_STATIC_HEAD),WM_SETTEXT,0,(LPARAM)"Enter search keyword.");			SendMessage(GetDlgItem(hwnd,IDC_STATIC_TAIL),WM_SETTEXT,0,(LPARAM)"");			SendMessage(GetDlgItem(hwnd,IDC_BUTTON_1),WM_SETTEXT,0,(LPARAM)"SEACH");			SendMessage(GetDlgItem(hwnd,IDC_BUTTON_2),WM_SETTEXT,0,(LPARAM)"NEXT SEARCH");			SendMessage(GetDlgItem(hwnd,IDC_BUTTON_3),WM_SETTEXT,0,(LPARAM)"CLOSE");			break;		}		return FALSE;	case WM_COMMAND:		switch (LOWORD(wParam)) {		case IDCLOSE:			ShowWindow(hwnd, SW_HIDE);			break;		case IDC_BUTTON_1:		case IDC_BUTTON_2:		{			int selected, nfiles, cursel;			SendDlgItemMessage(hwnd,IDC_EDIT_ONE_LINE,				WM_GETTEXT,(WPARAM)250,(LPARAM)ListSearchString);			w32g_get_playlist_index(&selected, &nfiles, &cursel);			if ( LOWORD(wParam) == IDC_BUTTON_2 )				cursel++;			if ( strlen ( ListSearchString ) > 0 ) {				char buff[ListSearchStringBuffSize];				for ( ; cursel < nfiles; cursel ++ ) {					int result = SendDlgItemMessage(hListWnd,IDC_LISTBOX_PLAYLIST,						LB_GETTEXTLEN,(WPARAM)cursel, 0 );					if ( result < ListSearchStringBuffSize ) {						result = SendDlgItemMessage(hListWnd,IDC_LISTBOX_PLAYLIST,							LB_GETTEXT,(WPARAM)cursel,(LPARAM)buff);						if ( result == LB_ERR ) {							cursel = LB_ERR;							break;						}						if ( strstr ( buff, ListSearchString ) != NULL ) {							break;						}					} else if ( result == LB_ERR ) {						cursel = LB_ERR;						break;					}				}				if ( cursel >= nfiles ) {					cursel = LB_ERR;				}			} else {				cursel = LB_ERR;			}			if ( cursel != LB_ERR ) {				SendDlgItemMessage(hListWnd,IDC_LISTBOX_PLAYLIST,					LB_SETCURSEL,(WPARAM)cursel,0);				SetNumListWnd(cursel,nfiles);				if ( LOWORD(wParam) == IDC_BUTTON_1 )					HideListSearch();			}		}			break;		case IDC_BUTTON_3:			HideListSearch();			break;		default:			return FALSE;	}		break;	case WM_CLOSE:		ShowWindow(hListSearchWnd, SW_HIDE);		break;	default:		return FALSE;	}	return FALSE;}void ShowListSearch(void){	ShowWindow(hListSearchWnd, SW_SHOW);}void HideListSearch(void){	ShowWindow(hListSearchWnd, SW_HIDE);}//****************************************************************************// SoundSpec WindowBOOL CALLBACK SoundSpecWndProc(HWND hwnd, UINT uMess, WPARAM wParam, LPARAM lParam);void InitSoundSpecWnd(HWND hParentWnd){	if (hSoundSpecWnd != NULL) {		DestroyWindow(hSoundSpecWnd);		hSoundSpecWnd = NULL;	}	hSoundSpecWnd = CreateDialog		(hInst,MAKEINTRESOURCE(IDD_DIALOG_SOUNDSPEC),hParentWnd,SoundSpecWndProc);	ShowWindow(hSoundSpecWnd,SW_HIDE);	UpdateWindow(hSoundSpecWnd);}BOOL CALLBACKSoundSpecWndProc(HWND hwnd, UINT uMess, WPARAM wParam, LPARAM lParam){	switch (uMess){	case WM_INITDIALOG:		return FALSE;	case WM_COMMAND:		switch (LOWORD(wParam)) {		case IDCLOSE:			ShowWindow(hwnd, SW_HIDE);			MainWndUpdateSoundSpecButton();			break;		default:			return FALSE;		}		case WM_SIZE:			return FALSE;		case WM_CLOSE:			ShowWindow(hSoundSpecWnd, SW_HIDE);			MainWndUpdateSoundSpecButton();			break;		default:			return FALSE;	}	return FALSE;}void w32g_open_doc(int close_if_no_doc){	if(close_if_no_doc==1 && DocWndInfo.DocFileMax <= 0)		ShowSubWindow(hDocWnd, 0);	else	{		DocWndReadDoc(1);		if(close_if_no_doc!=2)			ShowSubWindow(hDocWnd, 1);	}}void w32g_setup_doc(int idx){	char *filename;	DocWndInfoReset();	if((filename = w32g_get_playlist(idx)) == NULL)		return;	DocWndSetMidifile(filename);}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -