HANDLE create_edf_file(EDFHEADERStruct * from, CHANNELStruct * fromchn, char * filename) { HANDLE temp; char fname[256]; DWORD dwWritten; EDFHEADER_PHYSICALStruct file_header; char chnbuf[18000]; *filename=0; strcpy(fname,GLOBAL.resourcepath); strcat(fname,"ARCHIVES\\*.edf"); if (!open_file_dlg(ghWndMain,fname, FT_EDF, OPEN_SAVE)) return (INVALID_HANDLE_VALUE); write_logfile("create edf file: %s",fname); temp= CreateFile(fname, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, 0, NULL); if (temp==INVALID_HANDLE_VALUE) return (temp); edfheader_to_physical(from, &file_header); edfchannels_to_physical(fromchn, chnbuf, from->channels); WriteFile(temp,&file_header,256, &dwWritten,NULL); if (dwWritten!=256) { CloseHandle(temp); return(INVALID_HANDLE_VALUE); } WriteFile(temp,chnbuf,256*from->channels, &dwWritten,NULL); if (dwWritten!=(DWORD)256*from->channels) { CloseHandle(temp); return(INVALID_HANDLE_VALUE); } strcpy(filename,fname); return(temp); }
void confir_save_no_from_open_file_dlg(GtkWidget *widget, NKEdit *doc) { gtk_widget_destroy(file_dlg); nk_text_check_changed(doc, FALSE); open_file_dlg(doc); return; }
LRESULT CALLBACK AVIDlgHandler(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) { char szFileName[MAX_PATH]; AVIOBJ * st; st = (AVIOBJ *) actobject; if ((st==NULL)||(st->type!=OB_AVI)) return(FALSE); switch( message ) { case WM_INITDIALOG: SetDlgItemText(hDlg, IDC_AVIFILE, st->avifile); return TRUE; case WM_CLOSE: EndDialog(hDlg, LOWORD(wParam)); break; case WM_COMMAND: switch (LOWORD(wParam)) { case IDC_LOADAVI: strcpy(szFileName,GLOBAL.resourcepath); strcat(szFileName,"MOVIES\\*.avi"); if (open_file_dlg(hDlg, szFileName, FT_AVI, OPEN_LOAD)) { if (!st->OpenAVI(szFileName)) report_error("Could not load AVI File"); else { // reduce_filepath(szFileName,szFileName); strcpy(st->avifile,szFileName); SetDlgItemText(hDlg, IDC_AVIFILE, st->avifile); if (st->displayWnd) InvalidateRect(st->displayWnd,NULL,TRUE); } } InvalidateRect(hDlg,NULL,FALSE); break; } break; case WM_SIZE: case WM_MOVE: update_toolbox_position(hDlg); break; } return FALSE; }
HANDLE open_edf_file(EDFHEADERStruct * to, CHANNELStruct * tochn, char * filename) { char readbuf[8192]; int t,channels; HANDLE temp; char fname[256],szdata[300]; DWORD dwRead; if (!(filename[0])) { strcpy(fname,GLOBAL.resourcepath); strcat(fname,"ARCHIVES\\*.edf"); if (!open_file_dlg(ghWndMain,fname, FT_EDF, OPEN_LOAD)) return (INVALID_HANDLE_VALUE); } else strcpy(fname,filename); write_logfile("open edf file: %s",fname); temp= CreateFile(fname, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, 0, NULL); if (temp==INVALID_HANDLE_VALUE) return (temp); ReadFile(temp,readbuf,256, &dwRead,NULL); if (dwRead!=256) { CloseHandle(temp); return(INVALID_HANDLE_VALUE); } copy_string(readbuf,252,256,szdata); sscanf(szdata,"%d",&channels); for (t=0;t<channels;t++) { ReadFile(temp,readbuf+256+256*t,256, &dwRead,NULL); if (dwRead!=256) { CloseHandle(temp); return(INVALID_HANDLE_VALUE); } } parse_edf_header(to, tochn, readbuf); //if (filename) strcpy(filename,fname); return(temp); }
LRESULT CALLBACK OPTIMADlgHandler( HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam ) { static int init; NEUROBITOBJ * st; st = (NEUROBITOBJ *) actobject; if ((st==NULL)||(st->type!=OB_NEUROBIT)) return(FALSE); switch( message ) { case WM_INITDIALOG: { for (int t = 0; DevTab[t] != NULL; t++) SendDlgItemMessage( hDlg, IDC_NB_DEVICECOMBO, CB_ADDSTRING, 0,(LPARAM) (LPSTR) DevTab[t] ) ; SetDlgItemText(hDlg,IDC_NB_DEVICECOMBO,st->device); SetDlgItemText(hDlg,IDC_NB_ARCHIVE_NAME,st->archivefile); st->update_channelinfo(); } return TRUE; case WM_CLOSE: EndDialog(hDlg, LOWORD(wParam)); return TRUE; break; case WM_COMMAND: switch (LOWORD(wParam)) { case IDC_NB_DEVICECOMBO: if (HIWORD(wParam)==CBN_SELCHANGE) { int sel; sel=SendDlgItemMessage(hDlg, IDC_NB_DEVICECOMBO, CB_GETCURSEL, 0, 0 ) ; strcpy (st->device,DevTab[sel]); if (DevCtx>=0) NdCloseDevContext(DevCtx); DevCtx=NdOpenDevContext(st->device); st->update_channelinfo(); //InvalidateRect(hDlg,NULL,FALSE); } break; case IDC_DISPLAYSETTINGS: if (DevCtx>=0) { HDevWin = NdCreateDevWindow(hInst, ghWndMain, NB_DirName); NB_OBJ=st; } else write_logfile ("could not change Neurobit device settings (no device context)"); break; case IDC_OPEN_NB_ARCHIVE: strcpy(st->archivefile,GLOBAL.resourcepath); strcat(st->archivefile,"ARCHIVES\\*.nba"); if (open_file_dlg(ghWndMain,st->archivefile, FT_NB_ARCHIVE, OPEN_LOAD)) { st->filehandle = CreateFile(st->archivefile, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, 0, NULL); if (st->filehandle==INVALID_HANDLE_VALUE) { SetDlgItemText(hDlg,IDC_NB_ARCHIVE_NAME,"none"); report_error("Could not open Archive-File"); } else { SendMessage(ghWndStatusbox,WM_COMMAND,IDC_STOPSESSION,0); SetDlgItemText(hDlg,IDC_NB_ARCHIVE_NAME,st->archivefile); SendMessage(ghWndStatusbox,WM_COMMAND,IDC_RESETBUTTON,0); st->filemode=FILE_READING; } } break; case IDC_CLOSE_NB_ARCHIVE: if (st->filehandle!=INVALID_HANDLE_VALUE) { if (!CloseHandle(st->filehandle)) report_error("could not close Archive file"); st->filehandle=INVALID_HANDLE_VALUE; } break; case IDC_REC_NB_ARCHIVE: strcpy(st->archivefile,GLOBAL.resourcepath); strcat(st->archivefile,"ARCHIVES\\*.nba"); if (open_file_dlg(ghWndMain,st->archivefile, FT_NB_ARCHIVE, OPEN_SAVE)) { st->filehandle = CreateFile(st->archivefile, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, 0,NULL); if (st->filehandle==INVALID_HANDLE_VALUE) { SetDlgItemText(hDlg,IDC_NB_ARCHIVE_NAME,"none"); report_error("Could not open Archive-File"); } else { SetDlgItemText(hDlg,IDC_NB_ARCHIVE_NAME,st->archivefile); st->filemode=FILE_WRITING; } } break; case IDC_END_NB_RECORDING : if (st->filehandle!=INVALID_HANDLE_VALUE) { if (!CloseHandle(st->filehandle)) report_error("could not close Archive file"); st->filehandle=INVALID_HANDLE_VALUE; } break; } return TRUE; case WM_PAINT: color_button(GetDlgItem(hDlg,IDC_QCHN1),COLORS[chncol[1]]); color_button(GetDlgItem(hDlg,IDC_QCHN2),COLORS[chncol[2]]); color_button(GetDlgItem(hDlg,IDC_QCHN3),COLORS[chncol[3]]); color_button(GetDlgItem(hDlg,IDC_QCHN4),COLORS[chncol[4]]); color_button(GetDlgItem(hDlg,IDC_COMVOLT),COLORS[chncol[0]]); break; 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 CamDlgHandler(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) { static bool init; CAMOBJ * st; int tmp; st = (CAMOBJ *) actobject; if ((st==NULL)||(st->type!=OB_CAM)) return(FALSE); switch( message ) { case WM_INITDIALOG: SetDlgItemInt(hDlg,IDC_UPDATERATE,update_rate,0); SetDlgItemText(hDlg,IDC_CAMSTATUS,"0"); SetDlgItemInt(hDlg,IDC_ERROR_DIST,(int)dist_threshold,0); SetDlgItemInt(hDlg,IDC_ERROR_ANGLE,(int)angle_threshold,0); SetDlgItemInt(hDlg,IDC_THRESHOLD_TIME,threshold_time,0); SetDlgItemInt(hDlg,IDC_PT1X,(int)(PT1_xpos*100.0f),1); SetDlgItemInt(hDlg,IDC_PT1Y,(int)(PT1_ypos*100.0f),1); SetDlgItemInt(hDlg,IDC_PT2X,(int)(PT2_xpos*100.0f),1); SetDlgItemInt(hDlg,IDC_PT2Y,(int)(PT2_ypos*100.0f),1); CheckDlgButton(hDlg,IDC_AUTORESTORE,autorestore); CheckDlgButton(hDlg,IDC_SHOWLIVE,st->showlive); CheckDlgButton(hDlg,IDC_ENABLE_TRACKING,st->enable_tracking); CheckDlgButton(hDlg,IDC_TRACKFACE,st->trackface); if (st->mode==0) CheckDlgButton(hDlg,IDC_NOARCHIVE,TRUE); else if (st->mode==1) CheckDlgButton(hDlg,IDC_RECORDARCHIVE,TRUE); else if (st->mode==2) CheckDlgButton(hDlg,IDC_PLAYARCHIVE,TRUE); SetDlgItemText(hDlg,IDC_ARCHIVEFILE,st->videofilename); break; case WM_CLOSE: EndDialog(hDlg, LOWORD(wParam)); return TRUE; break; case WM_COMMAND: switch (LOWORD(wParam)) { case IDC_INITCAM: lk_init(st); break; case IDC_EXITCAM: lk_exit(); break; case IDC_RESET: count = 0; break; case IDC_NOARCHIVE: lk_exit(); st->mode=0; lk_init(st); break; case IDC_RECORDARCHIVE: lk_exit(); st->mode=1; if (!strcmp(st->videofilename,"none")) { strcpy(st->videofilename,GLOBAL.resourcepath); strcat(st->videofilename,"MOVIES\\*.avi"); } if (!open_file_dlg(hDlg,st->videofilename, FT_AVI, OPEN_SAVE)) strcpy(st->videofilename,"none"); SetDlgItemText(hDlg, IDC_ARCHIVEFILE,st->videofilename); lk_init(st); break; case IDC_PLAYARCHIVE: lk_exit(); st->mode=2; if (!strcmp(st->videofilename,"none")) { strcpy(st->videofilename,GLOBAL.resourcepath); strcat(st->videofilename,"MOVIES\\*.avi"); } if (!open_file_dlg(hDlg,st->videofilename, FT_AVI, OPEN_LOAD)) strcpy(st->videofilename,"none"); SetDlgItemText(hDlg, IDC_ARCHIVEFILE,st->videofilename); lk_init(st); break; case IDC_SHOWLIVE: st->showlive=IsDlgButtonChecked(hDlg,IDC_SHOWLIVE); if (!st->showlive) cvDestroyWindow("Camera"); else { cvNamedWindow( "Camera", 1 ); cvSetMouseCallback( "Camera", on_mouse, 0 ); } break; case IDC_UPDATERATE: tmp=GetDlgItemInt(hDlg,IDC_UPDATERATE,NULL,0); if ((tmp>10)&&(tmp<1000)) update_rate=tmp; break; case IDC_AUTORESTORE: autorestore=IsDlgButtonChecked(hDlg,IDC_AUTORESTORE); break; case IDC_TRACKFACE: st->trackface=IsDlgButtonChecked(hDlg,IDC_TRACKFACE); if (st->trackface) MAX_COUNT=2; else MAX_COUNT=1; break; case IDC_ERROR_DIST: dist_threshold=(float)GetDlgItemInt(hDlg, IDC_ERROR_DIST,0,0); break; case IDC_ERROR_ANGLE: angle_threshold=(float)GetDlgItemInt(hDlg, IDC_ERROR_ANGLE,0,0); break; case IDC_THRESHOLD_TIME: threshold_time=GetDlgItemInt(hDlg, IDC_THRESHOLD_TIME,0,0); break; case IDC_PT1X: PT1_xpos=(float) GetDlgItemInt(hDlg, IDC_PT1X,0,1) / 100.0f; need_to_init=1; break; case IDC_PT1Y: PT1_ypos=(float)GetDlgItemInt(hDlg, IDC_PT1Y,0,1)/ 100.0f; need_to_init=1; break; case IDC_PT2X: PT2_xpos=(float)GetDlgItemInt(hDlg, IDC_PT2X,0,1)/ 100.0f; need_to_init=1; break; case IDC_PT2Y: PT2_ypos=(float)GetDlgItemInt(hDlg, IDC_PT2Y,0,1)/ 100.0f; need_to_init=1; break; // case IDC_NIGHTMODE: // night_mode ^= 1; // break; case IDC_AUTOINIT: need_to_init=1; break; case IDC_ENABLE_TRACKING: st->enable_tracking=IsDlgButtonChecked(hDlg,IDC_ENABLE_TRACKING); break; case IDC_SETTINGS: { int ncams = cvcamGetCamerasCount( ); // init cvcam if (ncams==0) report("no cam"); cvcamSetProperty(0, CVCAM_PROP_ENABLE, CVCAMTRUE); //Selects the 1-st found camera cvcamInit(); cvcamGetProperty(0, CVCAM_CAMERAPROPS, NULL); // cvcamGetProperty(0, CVCAM_VIDEOFORMAT, NULL); cvcamExit(); } break; } return TRUE; break; case WM_SIZE: case WM_MOVE: update_toolbox_position(hDlg); break; return(TRUE); } return FALSE; }
LRESULT CALLBACK SpellerDlgHandler( HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam ) { SPELLEROBJ * st; char szFileName [256]; st = (SPELLEROBJ *) actobject; if ((st==NULL)||(st->type!=OB_SPELLER)) return(FALSE); switch( message ) { case WM_INITDIALOG: SetDlgItemInt(hDlg, IDC_SWITCHTIME,st->speed,0); SetDlgItemInt(hDlg, IDC_IDLETIME,st->idle,0); SetDlgItemInt(hDlg, IDC_PRESSTIME,st->press,0); SetDlgItemInt(hDlg, IDC_WORDCOUNT,st->wordcount,0); SetDlgItemText(hDlg, IDC_WORDFILE,st->wordfile); SetDlgItemText(hDlg,IDC_DICTFILE,st->dictfile); CheckDlgButton(hDlg, IDC_AUTOLEARN, st->autolearn); CheckDlgButton(hDlg, IDC_DIRECTSEND, st->directsend); SendDlgItemMessage( hDlg, IDC_MODECOMBO, CB_ADDSTRING, 0,(LPARAM) "Automatic Switching") ; SendDlgItemMessage( hDlg, IDC_MODECOMBO, CB_ADDSTRING, 0,(LPARAM) "Paddle + Joystick-Button") ; SendDlgItemMessage( hDlg, IDC_MODECOMBO, CB_ADDSTRING, 0,(LPARAM) "Joystick (2-Directions)") ; SendDlgItemMessage( hDlg, IDC_MODECOMBO, CB_SETCURSEL, st->mode, 0L ) ; return TRUE; case WM_CLOSE: EndDialog(hDlg, LOWORD(wParam)); return TRUE; break; case WM_COMMAND: switch (LOWORD(wParam)) { case IDC_AUTOLEARN: st->autolearn=IsDlgButtonChecked(hDlg,IDC_AUTOLEARN); break; case IDC_DIRECTSEND: st->directsend=IsDlgButtonChecked(hDlg,IDC_DIRECTSEND); break; case IDC_SWITCHTIME: st->speed=GetDlgItemInt(hDlg,IDC_SWITCHTIME,NULL,0); break; case IDC_IDLETIME: st->idle=GetDlgItemInt(hDlg,IDC_IDLETIME,NULL,0); break; case IDC_PRESSTIME: st->press=GetDlgItemInt(hDlg,IDC_PRESSTIME,NULL,0); break; case IDC_DICTFILE: GetDlgItemText(hDlg,IDC_DICTFILE,st->dictfile,256); break; case IDC_LEARN: GetDlgItemText(hDlg, IDC_NEWWORDS,st->word,sizeof(st->word)); st->learn_words(); SetDlgItemText(hDlg, IDC_NEWWORDS,""); strcpy(st->word,""); SetDlgItemInt(hDlg, IDC_WORDCOUNT,st->wordcount,0); break; case IDC_IMPORTLIST: strcpy(szFileName,GLOBAL.resourcepath); strcat(szFileName,"dictionary\\*.txt"); if (open_file_dlg(hDlg, szFileName, FT_TXT, OPEN_LOAD)) { if (!import_words(st, szFileName)) report_error("Could not import Word list"); else { strcpy(st->wordfile,szFileName); SetDlgItemText(hDlg, IDC_WORDFILE,st->wordfile); SetDlgItemInt(hDlg, IDC_WORDCOUNT,st->wordcount,0); } } else report_error("Could not open File"); break; case IDC_LOADDICT: strcpy(szFileName,GLOBAL.resourcepath); strcat(szFileName,"dictionary\\*.dic"); if (open_file_dlg(hDlg, szFileName, FT_DIC, OPEN_LOAD)) st->load_dictionary(szFileName); break; case IDC_SAVEDICT: if (strlen(st->dictfile)>=7) strcpy(szFileName,st->dictfile); else { strcpy(szFileName,GLOBAL.resourcepath); strcat(szFileName,"dictionary\\*.dic"); } if (open_file_dlg(hDlg, szFileName, FT_DIC, OPEN_SAVE)) st->save_dictionary(szFileName); break; case IDC_CLEARDICT: init_dict(st); SetDlgItemInt(hDlg, IDC_WORDCOUNT,st->wordcount,0); break; case IDC_EXPORTLIST: break; case IDC_MODECOMBO: if (HIWORD(wParam)==CBN_SELCHANGE) st->mode=SendMessage(GetDlgItem(hDlg, IDC_MODECOMBO), CB_GETCURSEL , 0, 0); switch (st->mode) { case 0: st->selections=st->entries; break; case 1: st->selections=st->entries; break; case 2: st->selections=st->entries; break; } break; } return TRUE; 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 FileReaderDlgHandler( HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam ) { FILE_READEROBJ * st; static int actchn; st = (FILE_READEROBJ *) actobject; if ((st==NULL)||(st->type!=OB_FILE_READER)) return(FALSE); switch( message ) { case WM_INITDIALOG: SetDlgItemText(hDlg, IDC_FILENAME, st->filename); SendDlgItemMessage(hDlg,IDC_FORMATCOMBO,CB_ADDSTRING,0,(LPARAM) (LPSTR) "ASCII-Integer Values, TAB / CR+LF delimited"); SendDlgItemMessage(hDlg,IDC_FORMATCOMBO,CB_ADDSTRING,0,(LPARAM) (LPSTR) "ASCII-Integer Values, Comma / CR+LF delimited"); SendDlgItemMessage(hDlg,IDC_FORMATCOMBO,CB_ADDSTRING,0,(LPARAM) (LPSTR) "ASCII-Float Values, TAB / CR+LF delimited"); SendDlgItemMessage(hDlg,IDC_FORMATCOMBO,CB_ADDSTRING,0,(LPARAM) (LPSTR) "ASCII-Float Values, Comma / CR+LF delimited"); SendDlgItemMessage(hDlg,IDC_FORMATCOMBO,CB_ADDSTRING,0,(LPARAM) (LPSTR) "ASCII-BioExplorer with header"); SendDlgItemMessage(hDlg,IDC_FORMATCOMBO,CB_ADDSTRING,0,(LPARAM) (LPSTR) "1-Channel raw integer 16bit signed"); SendDlgItemMessage(hDlg,IDC_FORMATCOMBO,CB_ADDSTRING,0,(LPARAM) (LPSTR) "1-Channel raw integer 16bit unsigned"); SendDlgItemMessage(hDlg, IDC_FORMATCOMBO, CB_SETCURSEL, st->format, 0L ) ; if (st->state) { SetDlgItemText(hDlg,IDC_FILESTATUS,"reading File"); EnableWindow(GetDlgItem(hDlg, IDC_OPENFILE), FALSE); EnableWindow(GetDlgItem(hDlg, IDC_START), FALSE); EnableWindow(GetDlgItem(hDlg, IDC_STOP), TRUE); EnableWindow(GetDlgItem(hDlg, IDC_CLOSE), FALSE); } else { if (st->file!=INVALID_HANDLE_VALUE) { SetDlgItemText(hDlg,IDC_FILESTATUS,"File opened"); EnableWindow(GetDlgItem(hDlg, IDC_CLOSE), TRUE); } else { SetDlgItemText(hDlg,IDC_FILESTATUS,"File not opened."); EnableWindow(GetDlgItem(hDlg, IDC_CLOSE), FALSE); } EnableWindow(GetDlgItem(hDlg, IDC_OPENFILE), TRUE); EnableWindow(GetDlgItem(hDlg, IDC_START), TRUE); EnableWindow(GetDlgItem(hDlg, IDC_STOP), FALSE); } return TRUE; case WM_CLOSE: EndDialog(hDlg, LOWORD(wParam)); return TRUE; case WM_COMMAND: switch (LOWORD(wParam)) { case IDC_OPENFILE: if (!strcmp(st->filename,"none")) { strcpy(st->filename,GLOBAL.resourcepath); strcat(st->filename,"ARCHIVES\\*.*"); } if (open_file_dlg(ghWndMain,st->filename, FT_TXT, OPEN_LOAD)) { if (!open_textarchive(st)) SetDlgItemText(hDlg,IDC_FILESTATUS,"Could not open File"); else { EnableWindow(GetDlgItem(hDlg, IDC_OPENFILE), FALSE); EnableWindow(GetDlgItem(hDlg, IDC_START), TRUE); SetDlgItemText(hDlg,IDC_FILESTATUS,"File opened"); } } get_session_length(); SetDlgItemText(hDlg,IDC_FILENAME,st->filename); InvalidateRect(ghWndDesign,NULL,TRUE); break; case IDC_START: if ((st->outports>0) &&(st->file!=INVALID_HANDLE_VALUE)) { SetDlgItemText(hDlg,IDC_FILESTATUS, "reading File"); // START FILE READING st->state=1; EnableWindow(GetDlgItem(hDlg, IDC_START), FALSE); EnableWindow(GetDlgItem(hDlg, IDC_STOP), TRUE); EnableWindow(GetDlgItem(hDlg, IDC_CLOSE), FALSE); } else SetDlgItemText(hDlg,IDC_FILESTATUS, "No Channels available."); break; case IDC_STOP: SetDlgItemText(hDlg,IDC_FILESTATUS, "stopped"); st->state=0; EnableWindow(GetDlgItem(hDlg, IDC_START), TRUE); EnableWindow(GetDlgItem(hDlg, IDC_OPENFILE), TRUE); EnableWindow(GetDlgItem(hDlg, IDC_STOP), FALSE); EnableWindow(GetDlgItem(hDlg, IDC_CLOSE), TRUE); break; case IDC_CLOSE: SetDlgItemText(hDlg,IDC_FILESTATUS, "file closed."); st->state=0; if (st->file!=INVALID_HANDLE_VALUE) CloseHandle(st->file); st->file=INVALID_HANDLE_VALUE; EnableWindow(GetDlgItem(hDlg, IDC_OPENFILE), TRUE); EnableWindow(GetDlgItem(hDlg, IDC_START), FALSE); EnableWindow(GetDlgItem(hDlg, IDC_CLOSE), FALSE); get_session_length(); st->samplecount=0; InvalidateRect(ghWndDesign,NULL,TRUE); break; case IDC_FORMATCOMBO: if (HIWORD(wParam)==CBN_SELCHANGE) { st->format=SendMessage(GetDlgItem(hDlg, IDC_FORMATCOMBO), CB_GETCURSEL , 0, 0); } break; } return TRUE; case WM_SIZE: case WM_MOVE: update_toolbox_position(hDlg); break; return TRUE; } return FALSE; }
// // function: MainWndHandler(HWND, unsigned, WORD, LONG) // // purpose: make initialisations (globals, Def-TTY settings) // create Toolbox Dialog // // process Menu Selections // load/save Config // play/capture Archive // open midi-device // change com settings // connect/disconnect to EEG-amp // load/save Config // // scale and paint the channel-oscilloscope // // // LRESULT CALLBACK MainWndHandler(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) { int wmId, wmEvent; char sztemp[256]; switch( message ) { case WM_CREATE: break; case WM_ENABLE: if ((wParam==TRUE) && (NB_OBJ != NULL)) { NB_OBJ->update_channelinfo(); NB_OBJ=NULL; } break; case WM_COMMAND: wmId = LOWORD(wParam); wmEvent = HIWORD(wParam); // Menüauswahlen analysieren: switch( wmId ) { case IDM_NEWCONFIG: stop_timer(); TTY.read_pause=1; //BreakDownCommPort(); CAPTFILE.do_read=0; close_captfile(); if (ghWndAnimation!=NULL) SendMessage(ghWndAnimation,WM_CLOSE,0,0); ghWndAnimation=NULL; close_toolbox(); write_logfile("new config: deleting all objects."); while (GLOBAL.objects>0) free_object(0); deviceobject=NULL; GLOBAL.showdesign=TRUE; ShowWindow(ghWndDesign,TRUE); SetWindowPos(ghWndDesign,HWND_TOP,0,0,0,0,SWP_DRAWFRAME|SWP_NOMOVE|SWP_NOSIZE); SetDlgItemText(ghWndStatusbox,IDC_DESIGN,"Hide Design"); GLOBAL.hidestatus=FALSE; ShowWindow(ghWndStatusbox,TRUE); SetWindowText(ghWndMain,"BrainBay"); GLOBAL.configfile[0]=0; init_system_time(); PACKET.readstate=0; GLOBAL.session_length=0; SetDlgItemText(ghWndStatusbox,IDC_STATUS,"ready."); SetDlgItemInt(ghWndStatusbox,IDC_SAMPLINGRATE,PACKETSPERSECOND,0); SetDlgItemText(ghWndStatusbox,IDC_STATUS,"Configuration loaded"); SetDlgItemText(ghWndStatusbox,IDC_TIME,"0.0"); SetDlgItemText(ghWndStatusbox,IDC_JUMPPOS,"0.0"); SetDlgItemText(ghWndStatusbox,IDC_SESSLEN,"0.0"); SendMessage(GetDlgItem(ghWndStatusbox,IDC_SESSIONPOS),TBM_SETPOS,TRUE,(LONG)0); SendMessage(GetDlgItem(ghWndStatusbox,IDC_SESSIONPOS),TBM_SETSELEND,TRUE,(LONG)0); SendMessage(GetDlgItem(ghWndStatusbox,IDC_SESSIONPOS),TBM_SETSELSTART,TRUE,(LONG)0); InvalidateRect(ghWndDesign,NULL,TRUE); InvalidateRect(ghWndMain,NULL,TRUE); break; case IDM_SAVECONFIG: { char configfilename[MAX_PATH]; int save_toolbox=GLOBAL.showtoolbox; close_toolbox(); GLOBAL.showtoolbox=save_toolbox; strcpy(configfilename,GLOBAL.resourcepath); if (GLOBAL.configfile[0]==0) strcat(configfilename,"CONFIGURATIONS\\*.con"); else strcpy(configfilename,GLOBAL.configfile); if (open_file_dlg(hWnd,configfilename, FT_CONFIGURATION, OPEN_SAVE)) { if (!save_configfile(configfilename)) report_error("Could not save Config File"); else { char * d_name,new_name[80]; write_logfile("configruation saved."); d_name=configfilename; while (strstr(d_name,"\\")) d_name=strstr(d_name,"\\")+1; strcpy(new_name,"BrainBay - ");strcat(new_name,d_name); SetWindowText(ghWndMain,new_name); } } if (GLOBAL.showtoolbox!=-1) { actobject=objects[GLOBAL.showtoolbox]; actobject->make_dialog(); } } break; case IDM_LOADCONFIG: { char configfilename[MAX_PATH]; close_toolbox(); strcpy(configfilename,GLOBAL.resourcepath); strcat(configfilename,"CONFIGURATIONS\\*.con"); if (open_file_dlg(hWnd,configfilename, FT_CONFIGURATION, OPEN_LOAD)) { write_logfile("load config: free existing objects."); if (!load_configfile(configfilename)) report_error("Could not load Config File"); else sort_objects(); } } break; case IDM_ABOUT: close_toolbox(); DialogBox(hInst, (LPCTSTR)IDD_ABOUTBOX, hWnd, (DLGPROC)AboutDlgHandler); break; case IDM_HELP: { char tmpfile [250]; close_toolbox(); strcpy(tmpfile,GLOBAL.resourcepath); strcat(tmpfile,"brainbay_user_manual.pdf"); ShellExecute(0, "open", tmpfile, NULL, NULL, SW_SHOWNORMAL); } break; case IDM_VIEWLASTLOGFILE: { char tmpfile [250]; close_toolbox(); strcpy(tmpfile,GLOBAL.resourcepath); strcat(tmpfile,"bbay.log"); ShellExecute(0, "open", tmpfile, NULL, NULL, SW_SHOWNORMAL); } break; case IDM_EXIT: DestroyWindow( hWnd ); break; case IDM_PLAY: SendMessage(ghWndStatusbox,WM_COMMAND, IDC_RUNSESSION,0); break; case IDM_STOP: SendMessage(ghWndStatusbox,WM_COMMAND, IDC_STOPSESSION,0); break; case IDM_NEUROSERVER: strcpy(sztemp,GLOBAL.resourcepath); strcat(sztemp,"NETWORK\\nsd.exe"); ShellExecute(hWnd, "open", sztemp, NULL, NULL, SW_SHOWNORMAL); break; case IDM_READEDF: { char edffilename[MAX_PATH]; close_toolbox(); strcpy(edffilename,GLOBAL.resourcepath); strcat(edffilename,"ARCHIVES\\*.edf"); if (open_file_dlg(hWnd,edffilename, FT_EDF, OPEN_LOAD)) { strcpy(sztemp,GLOBAL.resourcepath); strcat(sztemp,"NETWORK\\readedf.exe"); ShellExecute(hWnd, NULL, sztemp, edffilename, NULL, SW_SHOWNORMAL); } } break; case IDM_EDITCOLORS: close_toolbox(); display_toolbox(CreateDialog(hInst, (LPCTSTR)IDD_EDITCOLORBOX, ghWndStatusbox, (DLGPROC)COLORDlgHandler)); break; case IDM_EDITSCALES: close_toolbox(); display_toolbox(CreateDialog(hInst, (LPCTSTR)IDD_EDITSCALEBOX, ghWndStatusbox, (DLGPROC)SCALEDlgHandler)); break; case IDM_SETTINGS: if (ghWndSettings==NULL) ghWndSettings=CreateDialog(hInst, (LPCTSTR)IDD_SETTINGSBOX, ghWndStatusbox, (DLGPROC)SETTINGSDlgHandler); else SetForegroundWindow(ghWndSettings); break; case IDM_DEVICESETTINGS: if (deviceobject) { close_toolbox(); actobject=deviceobject; // GLOBAL.showtoolbox=find_object(devicebox); actobject->make_dialog(); if (actobject->displayWnd) SetWindowPos(actobject->displayWnd,HWND_TOP,0,0,0,0,SWP_DRAWFRAME|SWP_NOMOVE|SWP_NOSIZE); } else report ("No Amplifier Device present in the design"); break; case IDM_INSERTMIDI: create_object(OB_MIDI); break; case IDM_INSERTSPECTRUM: create_object(OB_FFT); break; case IDM_INSERTTHRESHOLD: create_object(OB_THRESHOLD); break; case IDM_INSERTFILTER: create_object(OB_FILTER); break; case IDM_INSERTMAGNITUDE:create_object(OB_MAGNITUDE); break; case IDM_INSERTPARTICLE:create_object(OB_PARTICLE); break; case IDM_INSERTOSCI:create_object(OB_OSCI); break; case IDM_INSERTTRANSLATE:create_object(OB_TRANSLATE); break; case IDM_INSERTSIGNAL:create_object(OB_SIGNAL); break; case IDM_INSERTAND:create_object(OB_AND); break; case IDM_INSERTOR:create_object(OB_OR); break; case IDM_INSERTNOT:create_object(OB_NOT); break; case IDM_INSERTWAV: if (!count_objects(OB_WAV)) create_object(OB_WAV); else report_error("Currently only one Sound player is supported."); break; case IDM_INSERTTCPRECEIVER:create_object(OB_TCP_RECEIVER); break; case IDM_INSERTDOKU:create_object(OB_DOKU); break; case IDM_INSERTEVAL:create_object(OB_EVAL); break; case IDM_INSERTAVI:create_object(OB_AVI); break; case IDM_INSERTAVERAGE:create_object(OB_AVERAGE); break; case IDM_INSERTCORR:create_object(OB_CORR); break; case IDM_INSERTEDFWRITER:create_object(OB_EDF_WRITER); break; case IDM_INSERTTCPSENDER:create_object(OB_TCP_SENDER); break; case IDM_INSERTEDFREADER:create_object(OB_EDF_READER); break; case IDM_INSERTCOMPARE:create_object(OB_COMPARE); break; case IDM_INSERTBALLGAME:create_object(OB_BALLGAME); break; case IDM_INSERTMIXER4:create_object(OB_MIXER4); break; case IDM_INSERTMOUSE:create_object(OB_MOUSE); break; case IDM_INSERTERPDETECT:create_object(OB_ERPDETECT); break; case IDM_INSERTCOM_WRITER:create_object(OB_COM_WRITER); break; case IDM_INSERTCAM: if (!count_objects(OB_CAM)) create_object(OB_CAM); break; case IDM_INSERTINTEGRATE:create_object(OB_INTEGRATE); break; case IDM_INSERTDEBOUNCE:create_object(OB_DEBOUNCE); break; case IDM_INSERTSAMPLE_HOLD:create_object(OB_SAMPLE_HOLD); break; case IDM_INSERTCONSTANT:create_object(OB_CONSTANT); break; case IDM_INSERTMATLAB:create_object(OB_MATLAB); break; case IDM_INSERTCOUNTER:create_object(OB_COUNTER); break; case IDM_INSERTSKINDIALOG: if (!count_objects(OB_SKINDIALOG)) create_object(OB_SKINDIALOG); break; case IDM_INSERTFILE_WRITER:create_object(OB_FILE_WRITER); break; case IDM_INSERTDEVIATION:create_object(OB_DEVIATION); break; case IDM_INSERTMCIPLAYER:create_object(OB_MCIPLAYER); break; case IDM_INSERTKEYSTRIKE:create_object(OB_KEYSTRIKE); break; case IDM_INSERTPEAKDETECT:create_object(OB_PEAKDETECT); break; case IDM_INSERTSPELLER:create_object(OB_SPELLER); break; case IDM_INSERTMARTINI:create_object(OB_MARTINI); break; case IDM_INSERTFILE_READER:create_object(OB_FILE_READER); break; case IDM_INSERTPORT_IO:create_object(OB_PORT_IO); break; case IDM_INSERTARRAY3600:create_object(OB_ARRAY3600); break; case IDM_INSERTCOMREADER:create_object(OB_COMREADER); break; case IDM_INSERTMIN:create_object(OB_MIN); break; case IDM_INSERTMAX:create_object(OB_MAX); break; case IDM_INSERTROUND:create_object(OB_ROUND); break; case IDM_INSERTDIFFERENTIATE:create_object(OB_DIFFERENTIATE); break; case IDM_INSERTDELAY:create_object(OB_DELAY); break; case IDM_INSERTLIMITER:create_object(OB_LIMITER); break; case IDM_INSERTFLOATVECTOR: create_object(OB_FLOATVECTOR); break; case IDM_INSERTVECTORFLOAT: create_object(OB_VECTORFLOAT); break; case IDM_INSERTDISPLAYVECTOR: create_object(OB_DISPLAYVECTOR); break; case IDM_INSERTVECTORBUFFER: create_object(OB_BUFFER); break; // here are th supported EED devices case IDM_INSERT_EEG_GENERIC8: if (!count_objects(OB_EEG)) { TTY.devicetype=DEV_RAW8BIT; create_object(OB_EEG);} break; case IDM_INSERT_EEG_GENERIC16: if (!count_objects(OB_EEG)) { TTY.devicetype=DEV_RAW; create_object(OB_EEG);} break; case IDM_INSERT_EEG_IBVA: if (!count_objects(OB_EEG)) { TTY.devicetype=DEV_IBVA; create_object(OB_EEG);} break; case IDM_INSERT_EEG_NIA: if (!count_objects(OB_EEG)) { TTY.devicetype=DEV_NIA; create_object(OB_EEG);} break; case IDM_INSERT_EEG_P21: if (!count_objects(OB_EEG)) { TTY.devicetype=DEV_MONOLITHEEG_P21; create_object(OB_EEG);} break; case IDM_INSERT_EEG_OPENBCI8: if (!count_objects(OB_EEG)) { TTY.devicetype=DEV_OPENBCI8; create_object(OB_EEG);} break; case IDM_INSERT_EEG_P2: if (!count_objects(OB_EEG)) { TTY.devicetype=DEV_MODEEG_P2; create_object(OB_EEG);} break; case IDM_INSERT_EEG_P3: if (!count_objects(OB_EEG)) { TTY.devicetype=DEV_MODEEG_P3; create_object(OB_EEG);} break; case IDM_INSERT_EEG_PENDANT: if (!count_objects(OB_EEG)) { TTY.devicetype=DEV_PENDANT3; create_object(OB_EEG);} break; case IDM_INSERT_EEG_QDS: if (!count_objects(OB_EEG)) { TTY.devicetype=DEV_QDS; create_object(OB_EEG);} break; case IDM_INSERT_EEG_SBT4: if (!count_objects(OB_EEG)) { TTY.devicetype=DEV_SBT4; create_object(OB_EEG);} break; case IDM_INSERT_EEG_SBT2: if (!count_objects(OB_EEG)) { TTY.devicetype=DEV_SBT2; create_object(OB_EEG);} break; // these devices need special care (seperate element) case IDM_INSERTOPTIMA: if ((!count_objects(OB_NEUROBIT)) && (!count_objects(OB_EEG))) create_object(OB_NEUROBIT); break; case IDM_INSERTEMOTIV: if ((!count_objects(OB_EMOTIV)) && (!count_objects(OB_EEG))) create_object(OB_EMOTIV); break; case IDM_COPY: if (actobject) { copy_object=actobject; if ((copy_object->type!=OB_EEG)&&(copy_object->type!=OB_WAV)&&(copy_object->type!=OB_CAM) &&(copy_object->type!=OB_SKINDIALOG)&&(copy_object->type!=OB_NEUROBIT)) { HANDLE hFile; char tmpfile[256]; create_object(copy_object->type); strcpy(tmpfile,GLOBAL.resourcepath); strcat(tmpfile,"tmp_copy.con"); hFile = CreateFile(tmpfile, GENERIC_WRITE, 0, NULL,CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL); if(hFile != INVALID_HANDLE_VALUE) { copy_object->save(hFile); save_property(hFile,"end Object",P_END,NULL); CloseHandle(hFile); } hFile = CreateFile(tmpfile, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, 0, NULL); if(hFile != INVALID_HANDLE_VALUE) { load_next_config_buffer(hFile); actobject->load(hFile); CloseHandle(hFile); DeleteFile(tmpfile); } actobject->xPos+=10; actobject->yPos+=10; } close_toolbox(); } break; default: return DefWindowProc( hWnd, message, wParam, lParam ); } break; case WM_ACTIVATE: { /* char t[50]; static int cn=0; cn++; sprintf(t,"%d:%d,%d",cn,HIWORD(lParam),LOWORD(lParam)); //==WA_CLICKACTIVE)) SendDlgItemMessage(ghWndStatusbox,IDC_LIST2, LB_ADDSTRING, 0, (LPARAM) t); SendDlgItemMessage(ghWndStatusbox,IDC_LIST2, LB_SETCURSEL, SendDlgItemMessage(ghWndStatusbox,IDC_LIST2, LB_GETCOUNT, 0, 0)-1, 0); UpdateWindow(ghWndStatusbox); */ if ((LOWORD(lParam)==WA_CLICKACTIVE) || (HIWORD(lParam)==WA_CLICKACTIVE)) SetWindowPos(ghWndMain,HWND_TOP,0,0,0,0,SWP_NOMOVE|SWP_NOSIZE); SetFocus(ghWndMain); } break; case WM_ACTIVATEAPP: { /* char t[50]; static int cn=0; cn++; sprintf(t,"%d:%d,%d",cn,HIWORD(lParam),LOWORD(lParam)); //==WA_CLICKACTIVE)) SendDlgItemMessage(ghWndStatusbox,IDC_LIST2, LB_ADDSTRING, 0, (LPARAM) t); SendDlgItemMessage(ghWndStatusbox,IDC_LIST2, LB_SETCURSEL, SendDlgItemMessage(ghWndStatusbox,IDC_LIST2, LB_GETCOUNT, 0, 0)-1, 0); UpdateWindow(ghWndStatusbox); */ // if ((LOWORD(lParam)==1828) || (LOWORD(lParam)==964)) //SetWindowPos(ghWndMain,HWND_TOP,0,0,0,0,SWP_NOMOVE|SWP_NOSIZE); SetWindowPos(ghWndMain,0,0,0,0,0,SWP_NOMOVE|SWP_NOSIZE); // return DefWindowProc( hWnd, message, wParam, lParam ); } break; case WM_KEYDOWN: if (lParam==KEY_DELETE ) SendMessage(ghWndDesign, message,wParam,lParam); break; case WM_SIZE: if (wParam== SIZE_MAXIMIZED) { GLOBAL.main_maximized=lParam; ShowWindow(ghWndStatusbox,TRUE); GLOBAL.hidestatus=FALSE; if (GLOBAL.session_length==0) SetWindowPos(ghWndStatusbox, ghWndMain, 4, HIWORD(lParam)+15, LOWORD(lParam)-8,HIWORD(lParam), 0); else SetWindowPos(ghWndStatusbox, ghWndMain, 4, HIWORD(lParam)-20, LOWORD(lParam)-8,HIWORD(lParam), 0); } else if (wParam== SIZE_RESTORED) { WINDOWPLACEMENT wndpl; GetWindowPlacement(ghWndMain, &wndpl); GLOBAL.top=wndpl.rcNormalPosition.top; GLOBAL.left=wndpl.rcNormalPosition.left; GLOBAL.right=wndpl.rcNormalPosition.right; GLOBAL.bottom=wndpl.rcNormalPosition.bottom; GLOBAL.main_maximized=0; update_status_window(); } else if (wParam== SIZE_MINIMIZED) { ShowWindow(ghWndStatusbox,FALSE); GLOBAL.hidestatus=TRUE; } break; case WM_MOVE: { WINDOWPLACEMENT wndpl; GetWindowPlacement(ghWndMain, &wndpl); GLOBAL.top=wndpl.rcNormalPosition.top; GLOBAL.left=wndpl.rcNormalPosition.left; GLOBAL.right=wndpl.rcNormalPosition.right; GLOBAL.bottom=wndpl.rcNormalPosition.bottom; update_status_window(); } break; //case WM_PAINT: // break; case WM_DESTROY: actobject=0; GlobalCleanup(); PostQuitMessage( 0 ); break; case WM_INPUT: if ((TTY.CONNECTED) && (!GLOBAL.loading)) ReadNIA( wParam, lParam); // NIA Daten vorhanden: auslesen return(TRUE); default: return DefWindowProc( hWnd, message, wParam, lParam ); } return 0; }
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; }