LRESULT CALLBACK DeviationDlgHandler(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) { static bool init; DEVIATIONOBJ * st; st = (DEVIATIONOBJ *) actobject; if ((st==NULL)||(st->type!=OB_DEVIATION)) return(FALSE); switch( message ) { case WM_INITDIALOG: SCROLLINFO lpsi; lpsi.cbSize=sizeof(SCROLLINFO); lpsi.fMask=SIF_RANGE|SIF_POS; lpsi.nMin=1; lpsi.nMax=NUMSAMPLES - 1; SetScrollInfo(GetDlgItem(hDlg,IDC_DEVIATIONINTERVALBAR),SB_CTL,&lpsi, TRUE); init = true; SetScrollPos(GetDlgItem(hDlg,IDC_DEVIATIONINTERVALBAR), SB_CTL,st->interval, TRUE); SetDlgItemInt(hDlg, IDC_DEVIATIONINTERVAL, st->interval, FALSE); init = false; break; case WM_CLOSE: EndDialog(hDlg, LOWORD(wParam)); return TRUE; break; case WM_COMMAND: return TRUE; break; case WM_HSCROLL: { int nNewPos; if (!init && (nNewPos = get_scrollpos(wParam,lParam)) >= 0) { if (lParam == (long) GetDlgItem(hDlg,IDC_DEVIATIONINTERVALBAR)) { SetDlgItemInt(hDlg, IDC_DEVIATIONINTERVAL, nNewPos, TRUE); st->change_interval(nNewPos); } } break; } case WM_SIZE: case WM_MOVE: update_toolbox_position(hDlg); break; return(TRUE); } return FALSE; }
LRESULT CALLBACK ThresholdDlgHandler( HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam ) { static int init; char temp[100]; THRESHOLDOBJ * st; int x; st = (THRESHOLDOBJ *) actobject; if ((st==NULL)||(st->type!=OB_THRESHOLD)) return(FALSE); for (x=0;x<GLOBAL.objects;x++) if (objects[x]==actobject) { char tmp[10]; wsprintf(tmp,"%d",x); //SendDlgItemMessage(ghWndStatusbox,IDC_LISTE,LB_ADDSTRING, 0, (LPARAM)(tmp)); } switch( message ) { case WM_INITDIALOG: { SCROLLINFO lpsi; lpsi.cbSize=sizeof(SCROLLINFO); lpsi.fMask=SIF_RANGE; // |SIF_POS; lpsi.nMin=1; lpsi.nMax=1000; SetScrollInfo(GetDlgItem(hDlg,IDC_AVGINTERVALBAR),SB_CTL,&lpsi,TRUE); SetScrollInfo(GetDlgItem(hDlg,IDC_ADAPTINTERVALBAR),SB_CTL,&lpsi,TRUE); lpsi.nMin=-1000; lpsi.nMax=1000; SetScrollInfo(GetDlgItem(hDlg,IDC_AVGGAINBAR),SB_CTL,&lpsi,TRUE); lpsi.nMin=0; lpsi.nMax=1000; SetScrollInfo(GetDlgItem(hDlg,IDC_AVGFROMBAR),SB_CTL,&lpsi,TRUE); SetScrollInfo(GetDlgItem(hDlg,IDC_AVGTOBAR),SB_CTL,&lpsi,TRUE); lpsi.nMin=0; lpsi.nMax=100; SetScrollInfo(GetDlgItem(hDlg,IDC_BARSIZEBAR),SB_CTL,&lpsi,TRUE); SetScrollInfo(GetDlgItem(hDlg,IDC_FONTSIZEBAR),SB_CTL,&lpsi,TRUE); init=TRUE; SetDlgItemInt(hDlg, IDC_AVGINTERVAL, st->interval_len,TRUE); SetDlgItemInt(hDlg, IDC_ADAPTINTERVAL, st->adapt_interval,TRUE); SetScrollPos(GetDlgItem(hDlg,IDC_AVGINTERVALBAR), SB_CTL,st->interval_len,TRUE); SetScrollPos(GetDlgItem(hDlg,IDC_ADAPTINTERVALBAR), SB_CTL,st->adapt_interval,TRUE); SetDlgItemInt(hDlg, IDC_AVGGAIN, st->signal_gain,1); SetScrollPos(GetDlgItem(hDlg,IDC_AVGGAINBAR), SB_CTL,st->signal_gain,TRUE); SetDlgItemInt(hDlg, IDC_BARSIZE, st->barsize,0); SetScrollPos(GetDlgItem(hDlg,IDC_BARSIZEBAR), SB_CTL,st->barsize,TRUE); SetDlgItemInt(hDlg, IDC_FONTSIZE, st->fontsize,0); SetScrollPos(GetDlgItem(hDlg,IDC_FONTSIZEBAR), SB_CTL,st->fontsize,TRUE); sprintf(temp,"%.2f",st->from_input); SetDlgItemText(hDlg, IDC_AVGFROM, temp); SetScrollPos(GetDlgItem(hDlg,IDC_AVGFROMBAR), SB_CTL,(int) size_value(st->in_ports[0].in_min,st->in_ports[0].in_max, st->from_input ,0.0f,1000.0f,0),TRUE); sprintf(temp,"%.2f",st->to_input); SetDlgItemText(hDlg, IDC_AVGTO, temp); SetScrollPos(GetDlgItem(hDlg,IDC_AVGTOBAR), SB_CTL,(int) size_value(st->in_ports[0].in_min,st->in_ports[0].in_max, st->to_input ,0.0f,1000.0f,0),TRUE); SetDlgItemInt(hDlg, IDC_BIGADAPT, st->bigadapt,TRUE); SetDlgItemInt(hDlg, IDC_SMALLADAPT, st->smalladapt,TRUE); SetDlgItemText(hDlg, IDC_METERCAPTION, st->wndcaption); CheckDlgButton(hDlg, IDC_AND,st->op); CheckDlgButton(hDlg, IDC_OR,!st->op); CheckDlgButton(hDlg, IDC_SHOWMETER,st->showmeter); CheckDlgButton(hDlg, IDC_RISING,st->rising); CheckDlgButton(hDlg, IDC_FALLING,st->falling); CheckDlgButton(hDlg, IDC_USE_MEDIAN,st->usemedian); CheckDlgButton(hDlg, IDC_BASELINE,st->baseline); if (st->baseline) SetDlgItemText(hDlg,IDC_INTERVALUNIT,"Seconds"); else SetDlgItemText(hDlg,IDC_INTERVALUNIT,"Samples"); init=FALSE; } return TRUE; case WM_CLOSE: EndDialog(hDlg, LOWORD(wParam)); return TRUE; break; case WM_COMMAND: switch (LOWORD(wParam)) { case IDC_AND: st->op=TRUE; break; case IDC_OR: st->op=FALSE; break; case IDC_RISING: st->rising=IsDlgButtonChecked(hDlg,IDC_RISING); break; case IDC_FALLING: st->falling=IsDlgButtonChecked(hDlg,IDC_FALLING); break; case IDC_USE_MEDIAN: st->usemedian=IsDlgButtonChecked(hDlg,IDC_USE_MEDIAN); break; case IDC_BASELINE: st->baseline=IsDlgButtonChecked(hDlg,IDC_BASELINE); if (st->baseline) SetDlgItemText(hDlg,IDC_INTERVALUNIT,"Seconds"); else SetDlgItemText(hDlg,IDC_INTERVALUNIT,"Samples"); break; case IDC_SELECTCOLOR: st->color=select_color(hDlg,st->color); st->redraw=1; InvalidateRect(hDlg,NULL,FALSE); break; case IDC_BKCOLOR: st->bkcolor=select_color(hDlg,st->bkcolor); st->redraw=1; InvalidateRect(hDlg,NULL,FALSE); break; case IDC_FONTCOL: st->fontcolor=select_color(hDlg,st->fontcolor); st->redraw=1; InvalidateRect(hDlg,NULL,FALSE); break; case IDC_FONTBKCOL: st->fontbkcolor=select_color(hDlg,st->fontbkcolor); st->redraw=1; InvalidateRect(hDlg,NULL,FALSE); break; case IDC_AVGFROM: GetDlgItemText(hDlg, IDC_AVGFROM,temp,sizeof(temp)); if (!init) st->from_input=(float)atof(temp); break; case IDC_AVGTO: GetDlgItemText(hDlg, IDC_AVGTO,temp,sizeof(temp)); if (!init) st->to_input=(float)atof(temp); break; case IDC_AVGINTERVAL: case IDC_ADAPTINTERVAL: case IDC_AVGGAIN: case IDC_BIGADAPT: case IDC_SMALLADAPT: case IDC_METERCAPTION: if (!init) apply_threshold(hDlg, st); break; case IDC_SHOWMETER: { int i; i=IsDlgButtonChecked(hDlg,IDC_SHOWMETER); if ((st->showmeter)&&(!i)&&(st->displayWnd)) { DestroyWindow(st->displayWnd); st->displayWnd=NULL; } if ((!st->showmeter)&&(i)) { if(!(st->displayWnd=CreateWindow("Meter_Class", st->wndcaption, WS_CLIPSIBLINGS| WS_CHILD | WS_CAPTION | WS_THICKFRAME ,st->left, st->top, st->right-st->left, st->bottom-st->top, ghWndMain, NULL, hInst, NULL))) report_error("can't create Meter Window"); else { st->last_value=0; ShowWindow( st->displayWnd, TRUE ); UpdateWindow( st->displayWnd ); } } st->showmeter=i; } break; } return TRUE; case WM_HSCROLL: { int nNewPos; float x; nNewPos=get_scrollpos(wParam,lParam); if (lParam == (long) GetDlgItem(hDlg,IDC_AVGINTERVALBAR)) SetDlgItemInt(hDlg, IDC_AVGINTERVAL,nNewPos,0); if (lParam == (long) GetDlgItem(hDlg,IDC_ADAPTINTERVALBAR)) SetDlgItemInt(hDlg, IDC_ADAPTINTERVAL,nNewPos,0); if (lParam == (long) GetDlgItem(hDlg,IDC_AVGGAINBAR)) SetDlgItemInt(hDlg, IDC_AVGGAIN,nNewPos,TRUE); if (lParam == (long) GetDlgItem(hDlg,IDC_BARSIZEBAR)) SetDlgItemInt(hDlg, IDC_BARSIZE,nNewPos,TRUE); if (lParam == (long) GetDlgItem(hDlg,IDC_FONTSIZEBAR)) SetDlgItemInt(hDlg, IDC_FONTSIZE,nNewPos,TRUE); if (lParam == (long) GetDlgItem(hDlg,IDC_AVGFROMBAR)) { x=size_value(0.0f,1000.0f,(float)nNewPos,st->in_ports[0].in_min,st->in_ports[0].in_max,0); sprintf(temp,"%.2f",x); SetDlgItemText(hDlg, IDC_AVGFROM, temp); } if (lParam == (long) GetDlgItem(hDlg,IDC_AVGTOBAR)) { x=size_value(0.0f,1000.0f,(float)nNewPos,st->in_ports[0].in_min,st->in_ports[0].in_max,0); sprintf(temp,"%.2f",x); SetDlgItemText(hDlg, IDC_AVGTO, temp); } apply_threshold(hDlg,st); if (st->displayWnd) {st->last_value=INVALID_VALUE; st->redraw=1; InvalidateRect(st->displayWnd,NULL,TRUE);} } break; case WM_SIZE: case WM_MOVE: update_toolbox_position(hDlg); case WM_PAINT: color_button(GetDlgItem(hDlg,IDC_SELECTCOLOR),st->color); color_button(GetDlgItem(hDlg,IDC_BKCOLOR),st->bkcolor); color_button(GetDlgItem(hDlg,IDC_FONTCOL),st->fontcolor); color_button(GetDlgItem(hDlg,IDC_FONTBKCOL),st->fontbkcolor); break; } return FALSE; }
LRESULT CALLBACK MagnitudeDlgHandler( HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam ) { int t; // ,z; static int tempfilt=0,acttype=0; static int dinit=FALSE; char sztemp[30]; MAGNITUDEOBJ * st; st = (MAGNITUDEOBJ *) actobject; if ((st==NULL)||(st->type!=OB_MAGNITUDE)) return(FALSE); switch( message ) { case WM_INITDIALOG: { SCROLLINFO lpsi; SendMessage(GetDlgItem(hDlg, IDC_PASSTYPECOMBO), CB_RESETCONTENT,0,0); for (t = 0; t < PASSTYPES; t++) SendMessage( GetDlgItem(hDlg, IDC_PASSTYPECOMBO), CB_ADDSTRING, 0, (LPARAM) (LPSTR) PASSTYPE[t].tname) ; SetDlgItemText(hDlg,IDC_PASSTYPECOMBO, PASSTYPE[st->filtertype].tname); acttype=st->filtertype; SetDlgItemInt(hDlg,IDC_ORDER, st->order,0); SetDlgItemInt(hDlg,IDC_GAIN, st->gain,0); lpsi.cbSize=sizeof(SCROLLINFO); lpsi.fMask=SIF_RANGE|SIF_POS; lpsi.nMin=1; lpsi.nMax=1280; SetScrollInfo(GetDlgItem(hDlg,IDC_CENTERBAR),SB_CTL,&lpsi,TRUE); lpsi.nMin=1; lpsi.nMax=200; SetScrollInfo(GetDlgItem(hDlg,IDC_WIDTHBAR),SB_CTL,&lpsi,TRUE); SetScrollPos(GetDlgItem(hDlg,IDC_CENTERBAR), SB_CTL,(int)(st->center*10.0f),TRUE); sprintf(sztemp,"%.4f",st->center); SetDlgItemText(hDlg,IDC_CENTER, sztemp); SetScrollPos(GetDlgItem(hDlg,IDC_WIDTHBAR), SB_CTL,(int)(st->wid*10.0f),TRUE); sprintf(sztemp,"%.4f",st->wid); SetDlgItemText(hDlg,IDC_WIDTH, sztemp); } return TRUE; case WM_CLOSE: EndDialog(hDlg, LOWORD(wParam)); return TRUE; break; case WM_COMMAND: switch (LOWORD(wParam)) { case IDC_PASSTYPECOMBO: acttype=SendMessage( GetDlgItem(hDlg, IDC_PASSTYPECOMBO), CB_GETCURSEL, 0, 0 ) ; break; case IDC_CENTER: if (HIWORD(wParam) == EN_KILLFOCUS) { GetDlgItemText(hDlg, IDC_CENTER, sztemp, 20); st->center = (float)atof(sztemp); if (st->center<0) { st->center=0; SetDlgItemText(hDlg,IDC_CENTER,"0");} if (st->center>PACKETSPERSECOND/2) { st->center=(float)(PACKETSPERSECOND/2); SetDlgItemInt(hDlg,IDC_CENTER,PACKETSPERSECOND/2,0);} // SendMessage (hDlg,WM_COMMAND,IDC_STORE,0); } break; case IDC_WIDTH: if (HIWORD(wParam) == EN_KILLFOCUS) { GetDlgItemText(hDlg, IDC_WIDTH, sztemp, 20); st->wid = (float)atof(sztemp); if (st->wid<0.0001) { st->wid=1; SetDlgItemText(hDlg,IDC_CENTER,"0.0001");} if (st->wid>PACKETSPERSECOND/2) { st->wid=(float)(PACKETSPERSECOND/2); SetDlgItemInt(hDlg,IDC_WIDTH,PACKETSPERSECOND/2,0);} // SendMessage (hDlg,WM_COMMAND,IDC_STORE,0); } break; case IDC_STORE: { char sztemp[30]; char szorder[5]; int test; test=GetDlgItemInt(hDlg,IDC_ORDER, NULL, 0); if ((test<1)||((test>10)&&(acttype==0))||((test>60)&&(acttype==1))) { SetDlgItemInt(hDlg,IDC_ORDER,st->order,0); return(TRUE); } st->filtertype=acttype; st->order=test; st->gain=GetDlgItemInt(hDlg,IDC_GAIN, NULL, 0); strcpy(sztemp,PASSTYPE[st->filtertype].init); GetDlgItemText(hDlg, IDC_ORDER, szorder, sizeof(szorder)); strcat(sztemp,szorder); st->lp1filt= fid_design(sztemp, PACKETSPERSECOND, (double)st->wid, 0, 0, 0); st->lp1run= fid_run_new(st->lp1filt, &(st->lp1funcp)); if (st->lp1fbuf!=NULL) { fid_run_freebuf(st->lp1fbuf); st->lp1fbuf=fid_run_newbuf(st->lp1run); } st->lp2filt= fid_design(sztemp, PACKETSPERSECOND,(double)st->wid, 0, 0, 0); st->lp2run= fid_run_new(st->lp2filt, &(st->lp2funcp)); if (st->lp2fbuf!=NULL) { fid_run_freebuf(st->lp2fbuf); st->lp2fbuf=fid_run_newbuf(st->lp2run); } return TRUE; } break; } return (TRUE); case WM_HSCROLL: { int nNewPos; if((nNewPos=get_scrollpos(wParam,lParam))>=0) { if (lParam == (long) GetDlgItem(hDlg,IDC_CENTERBAR)) { st->center=(float)nNewPos/10.0f; sprintf(sztemp,"%.2f",st->center); SetDlgItemText(hDlg, IDC_CENTER,sztemp); } if (lParam == (long) GetDlgItem(hDlg,IDC_WIDTHBAR)) { st->wid=(float)nNewPos/10.0f; sprintf(sztemp,"%.2f",st->wid); SetDlgItemText(hDlg, IDC_WIDTH,sztemp); } } } break; case WM_SIZE: case WM_MOVE: update_toolbox_position(hDlg); break; return(TRUE); } return FALSE; }
LRESULT CALLBACK BALLGAMEDlgHandler( HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam ) { BALLGAMEOBJ * st; st = (BALLGAMEOBJ *) actobject; if ((st==NULL)||(st->type!=OB_BALLGAME)) return(FALSE); switch( message ) { case WM_INITDIALOG: { SCROLLINFO lpsi; lpsi.cbSize=sizeof(SCROLLINFO); lpsi.fMask=SIF_RANGE; // |SIF_POS; lpsi.nMin=1; lpsi.nMax=100; SetScrollInfo(GetDlgItem(hDlg,IDC_SPEEDBAR),SB_CTL,&lpsi,TRUE); SetScrollInfo(GetDlgItem(hDlg,IDC_RACKETBAR),SB_CTL,&lpsi,TRUE); SetDlgItemInt(hDlg, IDC_SPEED,st->speed,0); SetDlgItemInt(hDlg, IDC_RACKET,st->racket,0); SetScrollPos(GetDlgItem(hDlg,IDC_SPEEDBAR), SB_CTL,st->speed,TRUE); SetScrollPos(GetDlgItem(hDlg,IDC_RACKETBAR), SB_CTL,st->racket,TRUE); CheckDlgButton(hDlg, IDC_MIDDLE, st->reset_middle); } return TRUE; case WM_CLOSE: EndDialog(hDlg, LOWORD(wParam)); return TRUE; break; case WM_COMMAND: switch (LOWORD(wParam)) { case IDC_RESETBEST: st->best=0; break; case IDC_MIDDLE: st->reset_middle=IsDlgButtonChecked(hDlg,IDC_MIDDLE); break; } return TRUE; case WM_HSCROLL: { int nNewPos; nNewPos=get_scrollpos(wParam,lParam); if (lParam == (long) GetDlgItem(hDlg,IDC_SPEEDBAR)) { SetDlgItemInt(hDlg, IDC_SPEED,nNewPos,0); st->speed=nNewPos;} if (lParam == (long) GetDlgItem(hDlg,IDC_RACKETBAR)) { SetDlgItemInt(hDlg, IDC_RACKET,nNewPos,0);st->racket=nNewPos;} InvalidateRect(st->displayWnd,NULL,TRUE); } break; case WM_SIZE: case WM_MOVE: update_toolbox_position(hDlg); case WM_PAINT: // color_button(GetDlgItem(hDlg,IDC_SELECTCOLOR),st->color); break; } return FALSE; }
LRESULT CALLBACK Mixer4DlgHandler( HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam ) { char sztemp[20]; MIXER4OBJ * st; st = (MIXER4OBJ *) actobject; if ((st==NULL)||(st->type!=OB_MIXER4)) return(FALSE); switch( message ) { case WM_INITDIALOG: { SCROLLINFO lpsi; lpsi.cbSize=sizeof(SCROLLINFO); lpsi.fMask=SIF_RANGE|SIF_POS; lpsi.nMin=0; lpsi.nMax=5000; SetScrollInfo(GetDlgItem(hDlg,IDC_CHN1BAR),SB_CTL,&lpsi,TRUE); SetScrollInfo(GetDlgItem(hDlg,IDC_CHN2BAR),SB_CTL,&lpsi,TRUE); SetScrollInfo(GetDlgItem(hDlg,IDC_CHN3BAR),SB_CTL,&lpsi,TRUE); SetScrollInfo(GetDlgItem(hDlg,IDC_CHN4BAR),SB_CTL,&lpsi,TRUE); switch (st->invmode) { case 0: CheckDlgButton(hDlg,IDC_INVIGNORE,TRUE); break; case 1: CheckDlgButton(hDlg,IDC_INVAND,TRUE); break; case 2: CheckDlgButton(hDlg,IDC_INVOR,TRUE); break; } update_scrollpos(hDlg,st); } return TRUE; case WM_CLOSE: EndDialog(hDlg, LOWORD(wParam)); return TRUE; break; case WM_COMMAND: switch (LOWORD(wParam)) { case IDC_SOLO1: st->chn1vol=100.0f; st->chn2vol=0.0f;st->chn3vol=0.0f;st->chn4vol=0.0f; update_scrollpos(hDlg,st); break; case IDC_SOLO2: st->chn2vol=100.0f; st->chn1vol=0.0f;st->chn3vol=0.0f;st->chn4vol=0.0f; update_scrollpos(hDlg,st); break; case IDC_SOLO3: st->chn3vol=100.0f; st->chn1vol=0.0f;st->chn2vol=0.0f;st->chn4vol=0.0f; update_scrollpos(hDlg,st); break; case IDC_SOLO4: st->chn4vol=100.0f; st->chn1vol=0.0f;st->chn2vol=0.0f;st->chn3vol=0.0f; update_scrollpos(hDlg,st); break; case IDC_INVIGNORE: st->invmode=0; break; case IDC_INVAND: st->invmode=1; break; case IDC_INVOR: st->invmode=2; break; } return TRUE; case WM_HSCROLL: { int nNewPos; nNewPos=get_scrollpos(wParam, lParam); { if (lParam == (long) GetDlgItem(hDlg,IDC_CHN1BAR)) { sprintf(sztemp,"%.2f",nNewPos/10.0f); SetDlgItemText(hDlg, IDC_CHN1,sztemp); st->chn1vol=(float)nNewPos/10.0f; } if (lParam == (long) GetDlgItem(hDlg,IDC_CHN2BAR)) { sprintf(sztemp,"%.2f",nNewPos/10.0f); SetDlgItemText(hDlg, IDC_CHN2,sztemp); st->chn2vol=(float)nNewPos/10.0f; } if (lParam == (long) GetDlgItem(hDlg,IDC_CHN3BAR)) { sprintf(sztemp,"%.2f",nNewPos/10.0f); SetDlgItemText(hDlg, IDC_CHN3,sztemp); st->chn3vol=(float)nNewPos/10.0f; } if (lParam == (long) GetDlgItem(hDlg,IDC_CHN4BAR)) { sprintf(sztemp,"%.2f",nNewPos/10.0f); SetDlgItemText(hDlg, IDC_CHN4,sztemp); st->chn4vol=(float)nNewPos/10.0f; } } } break; case WM_SIZE: case WM_MOVE: update_toolbox_position(hDlg); break; return TRUE; } return FALSE; }
LRESULT CALLBACK ParticleDlgHandler( HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam ) { PARTICLEOBJ * st; st = (PARTICLEOBJ *) actobject; if ((st==NULL)||(st->type!=OB_PARTICLE)) return(FALSE); switch( message ) { case WM_INITDIALOG: { SCROLLINFO lpsi; char sztemp[3]; int t; lpsi.cbSize=sizeof(SCROLLINFO); lpsi.fMask=SIF_RANGE|SIF_POS; lpsi.nMin=1; lpsi.nMax=1024; SetScrollInfo(GetDlgItem(hDlg,IDC_VALUEBAR),SB_CTL,&lpsi,TRUE); for (t=0;t<PARTICLE_PARAMS;t++) SendDlgItemMessage(hDlg, IDC_PARAMETERCOMBO, CB_ADDSTRING, 0,(LPARAM) (LPSTR) PARTICLEPARAMETER[t].paramname ) ; SendDlgItemMessage(hDlg, IDC_REMOTECOMBO, CB_ADDSTRING, 0,(LPARAM) (LPSTR) "none" ) ; for (t=1;t<7;t++) { sprintf(sztemp,"%d",t); SendDlgItemMessage(hDlg, IDC_REMOTECOMBO, CB_ADDSTRING, 0,(LPARAM) (LPSTR) sztemp ) ; } update_particledialog(hDlg,st); } return TRUE; case WM_CLOSE: EndDialog(hDlg, LOWORD(wParam)); return TRUE; break; case WM_COMMAND: switch (LOWORD(wParam)) { case IDC_PARAMETERCOMBO: if (HIWORD(wParam)==CBN_SELCHANGE) { st->act_parameter=SendDlgItemMessage(hDlg, IDC_PARAMETERCOMBO, CB_GETCURSEL, 0, 0 ) ; update_particledialog(hDlg,st); EnableWindow(GetDlgItem(hDlg, IDC_VALUEBAR),TRUE); } break; case IDC_PARTICLEMUTE: st->mute=IsDlgButtonChecked(hDlg, IDC_PARTICLEMUTE); break; case IDC_REMOTECOMBO: if (HIWORD(wParam)==CBN_SELCHANGE) { st->remote[st->act_parameter]=SendDlgItemMessage(hDlg, IDC_REMOTECOMBO, CB_GETCURSEL, 0, 0 ) ; //update_particledialog(hDlg,st); } break; case IDC_SETMIN: st->min[st->act_parameter]=st->get_paramvalue(st->act_parameter); st->value[st->act_parameter]=1.0f; //SetScrollPos(GetDlgItem(hDlg,IDC_VALUEBAR), SB_CTL,1,TRUE); update_particledialog(hDlg,st); break; case IDC_SETMAX: st->max[st->act_parameter]=st->get_paramvalue(st->act_parameter); st->value[st->act_parameter]=1024.0f; //SetScrollPos(GetDlgItem(hDlg,IDC_VALUEBAR), SB_CTL,1024,TRUE); update_particledialog(hDlg,st); break; case IDC_RESETMINMAX: st->min[st->act_parameter]=PARTICLEPARAMETER[st->act_parameter].min; st->max[st->act_parameter]=PARTICLEPARAMETER[st->act_parameter].max; update_particledialog(hDlg,st); break; case IDC_LOADPAL: { char szFileName[100]; int t; strcpy(szFileName,GLOBAL.resourcepath); strcat(szFileName,"PALETTES\\*.pal"); if (open_file_dlg(hDlg, szFileName, FT_PALETTE, OPEN_LOAD)) { if (!load_from_file(szFileName, &(st->cols), sizeof(st->cols))) report_error("Could not load Color Palette"); else { reduce_filepath(szFileName,szFileName); strcpy(st->palettefile,szFileName); SetDlgItemText(hDlg, IDC_PALETTEFILE, st->palettefile); for (t=0;t<128;t++) { st->colors[t][0]=(float)((st->cols[t]&0xff)/256.0); st->colors[t][1]=(float)(((st->cols[t]>>8)&0xff)/256.0); st->colors[t][2]=(float)((st->cols[t]>>16)/256.0); } } } } break; } return TRUE; break; case WM_HSCROLL: { int nNewPos; if ((nNewPos=get_scrollpos(wParam, lParam))>=0) { if (lParam == (long) GetDlgItem(hDlg,IDC_VALUEBAR)) { char sztemp[10]; st->value[st->act_parameter]=(float)nNewPos; sprintf(sztemp,"%.2f",st->get_paramvalue(st->act_parameter)); SetDlgItemText(hDlg, IDC_VALUE,sztemp); } } } case WM_SIZE: case WM_MOVE: update_toolbox_position(hDlg); break; return TRUE; } return FALSE; }
LRESULT CALLBACK BROWSEDlghandler( HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam ) { static int t,port=DEF_MIDIPORT,midichn=1,instrument=11; static char szFileName[MAX_PATH]; static int oldtone=0; switch( message ) { case WM_INITDIALOG: { SCROLLINFO lpsi; init_midi(); strcpy(LOADSCALE.name,"Chromatic1-127"); for (t=1;t<128;t++) LOADSCALE.tones[t-1]=t; LOADSCALE.len=127; SetDlgItemText(hDlg, IDC_HARMONICNAME, LOADSCALE.name); for (t=0;t<255;t++) SendDlgItemMessage(hDlg, IDC_MIDIINSTCOMBO, CB_ADDSTRING, 0,(LPARAM) (LPSTR) midi_instnames[t]) ; SendDlgItemMessage( hDlg, IDC_MIDIINSTCOMBO, CB_SETCURSEL, instrument, 0L ) ; for (t = 0; t < midiports; t++) if(MIDIPORTS[t].midiout) SendDlgItemMessage(hDlg, IDC_MIDIPORTCOMBO, CB_ADDSTRING, 0, (LPARAM) (LPSTR) MIDIPORTS[t].portname ) ; SetDlgItemText(hDlg, IDC_MIDIPORTCOMBO, MIDIPORTS[port].portname); lpsi.cbSize=sizeof(SCROLLINFO); lpsi.fMask=SIF_RANGE|SIF_POS; lpsi.nMin=1; lpsi.nMax=127; SetScrollInfo(GetDlgItem(hDlg,IDC_TONEBAR),SB_CTL,&lpsi,TRUE); SetScrollPos(GetDlgItem(hDlg, IDC_TONEBAR), SB_CTL, 64, 1); SetDlgItemInt(hDlg, IDC_ACTTONE, 64,0); SetDlgItemInt(hDlg, IDC_MIDICHN, midichn,0); midi_Instrument(&(MIDIPORTS[port].midiout),midichn,instrument); update_harmonic(GetDlgItem(hDlg, IDC_HARMONICLIST)); } return TRUE; case WM_CLOSE: midi_NoteOff(&(MIDIPORTS[port].midiout), midichn,oldtone); EndDialog(hDlg, LOWORD(wParam)); return TRUE; break; case WM_COMMAND: switch (LOWORD(wParam)) { case IDC_MIDIPORTCOMBO: if (HIWORD(wParam)==CBN_SELCHANGE) port=get_listed_midiport(SendMessage(GetDlgItem(hDlg, IDC_MIDIPORTCOMBO), CB_GETCURSEL , 0, 0)); midi_Instrument(&(MIDIPORTS[port].midiout),midichn,instrument); break; case IDC_MIDIINSTCOMBO: instrument=SendMessage(GetDlgItem(hDlg, IDC_MIDIINSTCOMBO), CB_GETCURSEL , 0, 0); midi_Instrument(&(MIDIPORTS[port].midiout),midichn,instrument); break; case IDC_MIDICHN: midichn=GetDlgItemInt(hDlg, IDC_MIDICHN, NULL, 0); midi_Instrument(&(MIDIPORTS[port].midiout),midichn,instrument); break; case IDC_DELTONE: { int select; select=SendDlgItemMessage( hDlg, IDC_HARMONICLIST, LB_GETCURSEL , 0, 0L ) ; if ((select>=0)&&(select<LOADSCALE.len)) { SendDlgItemMessage( hDlg, IDC_HARMONICLIST, LB_DELETESTRING , (WPARAM) select, 0L ) ; LOADSCALE.len--; SetFocus(GetDlgItem(hDlg,IDC_HARMONICLIST)); SendDlgItemMessage( hDlg, IDC_HARMONICLIST, LB_SETCURSEL , (WPARAM) select, 0L ) ; apply_harmonic(hDlg); } // else report("Nothing selected"); } break; case IDC_HARMONICNAME: GetDlgItemText(hDlg, IDC_HARMONICNAME, LOADSCALE.name, 256); break; case IDC_ADDTONE: { int index,dataint,select; char szdata[5]; if (LOADSCALE.len<MAX_HARMONICTONES-1) { select=SendDlgItemMessage( hDlg, IDC_HARMONICLIST, LB_GETCURSEL , 0, 0L )+1 ; if ((select<1)||(select>LOADSCALE.len)) select=LOADSCALE.len; GetDlgItemText(hDlg, IDC_ACTTONE, szdata, 4); dataint=GetDlgItemInt(hDlg, IDC_ACTTONE, 0,0); index=SendDlgItemMessage( hDlg, IDC_HARMONICLIST, LB_INSERTSTRING , (WPARAM) select, (LPARAM) szdata) ; SendDlgItemMessage(hDlg, IDC_HARMONICLIST, LB_SETITEMDATA, (WPARAM)index, (LPARAM)dataint); LOADSCALE.len++; SetFocus(GetDlgItem(hDlg,IDC_HARMONICLIST)); apply_harmonic(hDlg); } ; } break; case IDC_HARMONICCLEAR: SendDlgItemMessage(hDlg, IDC_HARMONICLIST, LB_RESETCONTENT, 0, 0); LOADSCALE.len=0; apply_harmonic(hDlg); break; case IDC_LOADHARMONIC: { strcpy(szFileName,DEFPATH); strcat(szFileName,"TONESCALES\\default.sc"); if (open_file_dlg(hDlg, szFileName, OPEN_LOAD)) { /* char tmp[256],*p1,*p2,diff=0; strcpy(tmp,DEFPATH); strcat(tmp,"TONESCALES\\"); for (p1=tmp,p2=szFileName;(*p1) && (*p2) && (!diff);p1++,p2++) if (tolower(*p1)!=tolower(*p2)) diff=1; if (diff||(strlen(tmp)>strlen(szFileName))) report("Please use Tonescales-subfolder of brainbay application to load/store palette files"); else*/ { if (!load_from_file(szFileName, &LOADSCALE, sizeof(struct SCALEStruct))) report("Could not load Harmonic Scale"); else { update_harmonic(GetDlgItem(hDlg, IDC_HARMONICLIST)); SetDlgItemText(hDlg, IDC_HARMONICNAME, LOADSCALE.name); } } } else report("Could not load Harmonic Scale"); } break; case IDC_SAVEHARMONIC: { char temp[100]; strcpy(szFileName,DEFPATH); strcat(szFileName,"TONESCALES\\"); GetDlgItemText(hDlg, IDC_HARMONICNAME, temp, MAX_PATH); strcat (szFileName,temp); strcat (szFileName,".sc"); if (open_file_dlg(hDlg, szFileName, OPEN_SAVE)) { /* char tmp[256],*p1,*p2,diff=0; strcpy(tmp,DEFPATH); strcat(tmp,"TONESCALES\\"); for (p1=tmp,p2=szFileName;(*p1) && (*p2) && (!diff);p1++,p2++) if (tolower(*p1)!=tolower(*p2)) diff=1; if (diff||(strlen(tmp)>strlen(szFileName))) report("Please use Tonescales-subfolder of brainbay application to load/store palette files"); else*/ { if (!save_to_file(szFileName, &LOADSCALE, sizeof(struct SCALEStruct))) report("Could not save Scale"); } } } break; case IDC_HARMONICLIST: if (HIWORD(wParam)==LBN_SELCHANGE) { int dataint,sel; sel=SendDlgItemMessage( hDlg, IDC_HARMONICLIST, LB_GETCURSEL , 0, 0L ) ; dataint=SendDlgItemMessage(hDlg, IDC_HARMONICLIST, LB_GETITEMDATA, (WPARAM)sel, 0); midi_NoteOff(&(MIDIPORTS[port].midiout), midichn,oldtone); oldtone=dataint; midi_NoteOn(&(MIDIPORTS[port].midiout), midichn, dataint,127); } break; } return TRUE; case WM_HSCROLL: { int nNewPos; if ((nNewPos=get_scrollpos(wParam,lParam))>=0) { if (lParam == (long) GetDlgItem(hDlg,IDC_TONEBAR)) { SetDlgItemInt(hDlg, IDC_ACTTONE,nNewPos,0); midi_NoteOff(&(MIDIPORTS[port].midiout), midichn,oldtone); oldtone=nNewPos; midi_NoteOn(&(MIDIPORTS[port].midiout), midichn,nNewPos,127); apply_harmonic(hDlg); } } } break; case WM_SIZE: case WM_MOVE: ; break; return TRUE; } return FALSE; }
LRESULT CALLBACK CounterDlgHandler( HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam ) { static int init; COUNTEROBJ * st; st = (COUNTEROBJ *) actobject; if ((st==NULL)||(st->type!=OB_COUNTER)) return(FALSE); switch( message ) { case WM_INITDIALOG: SCROLLINFO lpsi; lpsi.cbSize=sizeof(SCROLLINFO); lpsi.fMask=SIF_RANGE|SIF_POS; lpsi.nMin=4; lpsi.nMax=300; SetScrollInfo(GetDlgItem(hDlg,IDC_FONTSIZEBAR),SB_CTL,&lpsi, TRUE); SetScrollPos(GetDlgItem(hDlg,IDC_FONTSIZEBAR), SB_CTL,st->fontsize, TRUE); SetDlgItemInt(hDlg, IDC_FONTSIZE, st->fontsize, FALSE); SetDlgItemText(hDlg, IDC_CAPTION, st->wndcaption); SetDlgItemInt(hDlg, IDC_RESETVALUE, (int)st->resetvalue,TRUE); switch (st->mode) { case 0: CheckDlgButton(hDlg, IDC_COUNTFT,TRUE); break; case 1: CheckDlgButton(hDlg, IDC_COUNTTF,TRUE); break; case 2: CheckDlgButton(hDlg, IDC_COUNTIV,TRUE); break; case 3: CheckDlgButton(hDlg, IDC_COUNTFREQ,TRUE); break; } CheckDlgButton(hDlg, IDC_SHOWCOUNTER,st->showcounter); CheckDlgButton(hDlg, IDC_INTEGER,st->integer); return TRUE; case WM_CLOSE: EndDialog(hDlg, LOWORD(wParam)); return TRUE; break; case WM_COMMAND: switch (LOWORD(wParam)) { case IDC_COUNTFT: st->mode=0; break; case IDC_COUNTTF: st->mode=1; break; case IDC_COUNTIV: st->mode=2; break; case IDC_COUNTFREQ: st->mode=3; break; case IDC_RESETCOUNTER: st->countervalue=st->resetvalue; break; case IDC_RESETVALUE: st->resetvalue=(float)GetDlgItemInt(hDlg, IDC_RESETVALUE,NULL, 1); break; case IDC_FONTCOLOR: st->fontcolor=select_color(hDlg); InvalidateRect(hDlg,NULL,FALSE); InvalidateRect(st->displayWnd,NULL,TRUE); break; case IDC_BKCOLOR: st->bkcolor=select_color(hDlg); InvalidateRect(hDlg,NULL,FALSE); InvalidateRect(st->displayWnd,NULL,TRUE); break; case IDC_CAPTION: GetDlgItemText(hDlg,IDC_CAPTION,st->wndcaption,50); SetWindowText(st->displayWnd,st->wndcaption); break; case IDC_INTEGER: st->integer=IsDlgButtonChecked(hDlg,IDC_INTEGER); InvalidateRect(st->displayWnd,NULL,TRUE); break; case IDC_SHOWCOUNTER: { int i; i=IsDlgButtonChecked(hDlg,IDC_SHOWCOUNTER); if ((st->showcounter)&&(!i)&&(st->displayWnd)) { DestroyWindow(st->displayWnd); st->displayWnd=NULL; } if ((!st->showcounter)&&(i)) { if(!(st->displayWnd=CreateWindow("Counter_Class", "Counter", WS_THICKFRAME| WS_CLIPCHILDREN,st->left, st->top, st->right-st->left, st->bottom-st->top, NULL, NULL, hInst, NULL))) report_error("can't create Counter Window"); else { ShowWindow( st->displayWnd, TRUE ); UpdateWindow( st->displayWnd ); } } st->showcounter=i; } break; } return TRUE; case WM_HSCROLL: if (lParam == (long) GetDlgItem(hDlg,IDC_FONTSIZEBAR)) { int nNewPos=get_scrollpos(wParam,lParam); SetDlgItemInt(hDlg, IDC_FONTSIZE, nNewPos, TRUE); st->fontsize=nNewPos; if (st->font) DeleteObject(st->font); if (!(st->font = CreateFont(-MulDiv(st->fontsize, GetDeviceCaps(GetDC(NULL), LOGPIXELSY), 72), 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "Arial"))) report_error("Font creation failed!"); InvalidateRect(st->displayWnd, NULL, TRUE); } break; case WM_SIZE: case WM_MOVE: update_toolbox_position(hDlg); case WM_PAINT: color_button(GetDlgItem(hDlg,IDC_FONTCOLOR),st->fontcolor); color_button(GetDlgItem(hDlg,IDC_BKCOLOR),st->bkcolor); break; } return FALSE; }
LRESULT CALLBACK SignalDlgHandler( HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam ) { static int init; char sztemp[20]; SIGNALOBJ * st; st = (SIGNALOBJ *) actobject; if ((st==NULL)||(st->type!=OB_SIGNAL)) return(FALSE); switch( message ) { case WM_INITDIALOG: { SCROLLINFO lpsi; lpsi.cbSize=sizeof(SCROLLINFO); lpsi.fMask=SIF_RANGE|SIF_POS; lpsi.nMin=0; lpsi.nMax=6000; SetScrollInfo(GetDlgItem(hDlg,IDC_FREQUENCYBAR),SB_CTL,&lpsi,TRUE); lpsi.nMin=0; lpsi.nMax=1000; SetScrollInfo(GetDlgItem(hDlg,IDC_GAINBAR),SB_CTL,&lpsi,TRUE); lpsi.nMin=0; lpsi.nMax=360; SetScrollInfo(GetDlgItem(hDlg,IDC_PHASEBAR),SB_CTL,&lpsi,TRUE); lpsi.nMin=-5000; lpsi.nMax=5000; SetScrollInfo(GetDlgItem(hDlg,IDC_CENTERBAR),SB_CTL,&lpsi,TRUE); lpsi.nMin=0; lpsi.nMax=1000; SetScrollInfo(GetDlgItem(hDlg,IDC_NOISEBAR),SB_CTL,&lpsi,TRUE); SetScrollPos(GetDlgItem(hDlg,IDC_FREQUENCYBAR), SB_CTL,(int)(st->frequency*100.0f),TRUE); sprintf(sztemp,"%.2f",st->frequency); SetDlgItemText(hDlg, IDC_FREQUENCY,sztemp); SetScrollPos(GetDlgItem(hDlg,IDC_CENTERBAR), SB_CTL,(int)st->center,TRUE); SetDlgItemInt(hDlg, IDC_CENTER, (int)st->center,1); SetScrollPos(GetDlgItem(hDlg,IDC_GAINBAR), SB_CTL,(int)st->gain,TRUE); SetDlgItemInt(hDlg, IDC_GAIN, (int)(st->gain/1000.0f*st->out_ports[0].out_max),0); SetScrollPos(GetDlgItem(hDlg,IDC_PHASEBAR), SB_CTL,(int)st->phase,TRUE); SetDlgItemInt(hDlg, IDC_PHASE, (int)st->phase,0); SetScrollPos(GetDlgItem(hDlg,IDC_NOISEBAR), SB_CTL,(int)st->noise,TRUE); SetDlgItemInt(hDlg, IDC_NOISE, (int)st->noise,0); SendDlgItemMessage( hDlg, IDC_SIGNALCOMBO, CB_ADDSTRING, 0,(LPARAM) "Sinus") ; SendDlgItemMessage( hDlg, IDC_SIGNALCOMBO, CB_ADDSTRING, 0,(LPARAM) "Sawtooth") ; SendDlgItemMessage( hDlg, IDC_SIGNALCOMBO, CB_ADDSTRING, 0,(LPARAM) "Rectangle") ; SendDlgItemMessage( hDlg, IDC_SIGNALCOMBO, CB_ADDSTRING, 0,(LPARAM) "Ramp") ; SendDlgItemMessage( hDlg, IDC_SIGNALCOMBO, CB_SETCURSEL, st->sigtype, 0L ) ; CheckDlgButton(hDlg, IDC_ENABLE_IN, st->enable_in); } return TRUE; case WM_CLOSE: EndDialog(hDlg, LOWORD(wParam)); return TRUE; break; case WM_COMMAND: switch (LOWORD(wParam)) { case IDC_SIGNALCOMBO: if (HIWORD(wParam)==CBN_SELCHANGE) st->sigtype=SendMessage(GetDlgItem(hDlg, IDC_SIGNALCOMBO), CB_GETCURSEL , 0, 0); break; case IDC_ENABLE_IN: st->enable_in= IsDlgButtonChecked(hDlg, IDC_ENABLE_IN); if (st->enable_in) { st->width=80; st->inports=2; st->height=CON_START+2*CON_HEIGHT+5;} else {st->width=50; st->inports=0; st->height=CON_START+CON_HEIGHT+5; } InvalidateRect(ghWndDesign,NULL,TRUE); break; } return TRUE; case WM_HSCROLL: { int nNewPos; //if (( nNewPos=get_scrollpos(wParam, lParam); //)>=0) { if (lParam == (long) GetDlgItem(hDlg,IDC_FREQUENCYBAR)) { sprintf(sztemp,"%.2f",nNewPos/100.0f); SetDlgItemText(hDlg, IDC_FREQUENCY,sztemp); st->frequency=(float)nNewPos/100.0f; } if (lParam == (long) GetDlgItem(hDlg,IDC_CENTERBAR)) { st->center=(float)nNewPos; SetDlgItemInt(hDlg, IDC_CENTER,(int)(st->center),1); } if (lParam == (long) GetDlgItem(hDlg,IDC_GAINBAR)) { st->gain=(float)nNewPos; SetDlgItemInt(hDlg, IDC_GAIN,(int)(st->gain/1000.0f*st->out_ports[0].out_max),0); } if (lParam == (long) GetDlgItem(hDlg,IDC_PHASEBAR)) { SetDlgItemInt(hDlg, IDC_PHASE,nNewPos,0); st->phase=(float)nNewPos; } if (lParam == (long) GetDlgItem(hDlg,IDC_NOISEBAR)) { SetDlgItemInt(hDlg, IDC_NOISE,nNewPos,0); st->noise=nNewPos; } } } break; case WM_SIZE: case WM_MOVE: update_toolbox_position(hDlg); break; return TRUE; } return FALSE; }
LRESULT CALLBACK MCIDlgHandler(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) { char szFileName[MAX_PATH]; MCIOBJ * st; st = (MCIOBJ *) actobject; if ((st==NULL)||(st->type!=OB_MCIPLAYER)) return(FALSE); switch( message ) { case WM_INITDIALOG: SetDlgItemText(hDlg, IDC_MCIFILE, st->mcifile); SCROLLINFO lpsi; lpsi.cbSize=sizeof(SCROLLINFO); lpsi.fMask=SIF_RANGE|SIF_POS; lpsi.nMin=4; lpsi.nMax=5000; SetScrollInfo(GetDlgItem(hDlg,IDC_SPEEDUPDATEBAR),SB_CTL,&lpsi, TRUE); SetScrollPos(GetDlgItem(hDlg,IDC_SPEEDUPDATEBAR), SB_CTL,st->upd_speed, TRUE); SetDlgItemInt(hDlg, IDC_UPDATESPEED, st->upd_speed, FALSE); SetDlgItemInt(hDlg, IDC_POS_CENTER, st->pos_center, FALSE); CheckDlgButton(hDlg, IDC_PLAY_ONCE, st->play_once); return TRUE; case WM_CLOSE: EndDialog(hDlg, LOWORD(wParam)); break; case WM_COMMAND: switch (LOWORD(wParam)) { case IDC_OPEN: if (!(strcmp(st->mcifile,"none"))) { strcpy(szFileName,GLOBAL.resourcepath); strcat(szFileName,"MOVIES\\*.avi"); } else strcpy (szFileName,st->mcifile); if (open_file_dlg(hDlg, szFileName, FT_AVI, OPEN_LOAD)) { st->playing=FALSE; strcpy(st->mcifile,szFileName); SetDlgItemText(hDlg, IDC_MCIFILE, st->mcifile); } InvalidateRect(hDlg,NULL,FALSE); break; case IDC_PLAY_ONCE: st->play_once=IsDlgButtonChecked(hDlg,IDC_PLAY_ONCE); break; case IDC_LOAD: if (st->m_video) { MCIWndStop(st->m_video); MCIWndDestroy(st->m_video); } st->m_video = MCIWndCreate(ghWndMain, hInst,WS_VISIBLE|WS_THICKFRAME|MCIWNDF_NOERRORDLG,st->mcifile); if (!st->m_video) report_error ("Cannot open MCI File"); else { RECT prc; MCIWndSetZoom(st->m_video,100); MCIWndGetSource(st->m_video,&prc); MCIWndSetTimeFormat(st->m_video ,"ms"); MCIWndSetActiveTimer(st->m_video,500); if ((!strstr(st->mcifile,".mp3")) && (!strstr(st->mcifile,".wav"))) SetWindowPos(st->m_video,HWND_TOPMOST,st->left,st->top,st->left+prc.right-prc.left,st->top+prc.bottom-prc.top,SWP_SHOWWINDOW); else ShowWindow(st->m_video,FALSE); } break; case IDC_MCIPLAY: if (st->m_video) { MCIWndSetSpeed(st->m_video,st->speed); MCIWndPlay(st->m_video); st->playing=TRUE; } break; case IDC_MCISTOP: if (st->m_video) { MCIWndStop(st->m_video);} // MCIWndDestroy(st->m_video); } st->playing=FALSE; break; case IDC_MCIPLUS: st->speed+=50; if (st->m_video) { MCIWndSetSpeed(st->m_video,st->speed); //MCIWndStep(st->m_video,2); MCIWndPlay(st->m_video); } break; case IDC_MCIMINUS: st->speed-=50; if (st->m_video) { MCIWndSetSpeed(st->m_video,st->speed); //MCIWndStep(st->m_video,2); MCIWndPlay(st->m_video); } break; case IDC_POS_CENTER: st->pos_center=GetDlgItemInt(hDlg,IDC_POS_CENTER,0,FALSE); break; } break; case WM_HSCROLL: { int nNewPos; nNewPos = get_scrollpos(wParam,lParam); if (lParam == (long) GetDlgItem(hDlg,IDC_SPEEDUPDATEBAR)) { SetDlgItemInt(hDlg, IDC_UPDATESPEED, nNewPos, TRUE); st->upd_speed=nNewPos; } break; } case WM_SIZE: case WM_MOVE: update_toolbox_position(hDlg); break; } return FALSE; }