Ejemplo n.º 1
0
//for array_data_ports
void delete_connection(LINKStruct *myactconnect){
	int o,c;
	o=myactconnect->to_object;c=-1;
	for(;myactconnect->to_port!=-1;myactconnect++)
		memcpy(myactconnect,(void *)(myactconnect+1),sizeof(struct LINKStruct));

	close_toolbox();
}
Ejemplo n.º 2
0
LRESULT CALLBACK MeterWndHandler(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{   
	int t;
	THRESHOLDOBJ * st;
	

	st=NULL;
	for (t=0;(t<GLOBAL.objects)&&(st==NULL);t++)
		if (objects[t]->type==OB_THRESHOLD)
		{	st=(THRESHOLDOBJ *)objects[t];
		    if (st->displayWnd!=hWnd) st=NULL;
		}

	if (st==NULL) return DefWindowProc( hWnd, message, wParam, lParam );
	
	switch( message ) 
	{	case WM_DESTROY:
		 break;
		case WM_KEYDOWN:
			  SendMessage(ghWndMain, message,wParam,lParam);
			break;
		case WM_MOUSEACTIVATE:
   	      st->redraw=1;
		  close_toolbox();
		  actobject=st;
		  SetWindowPos(hWnd,HWND_TOP,0,0,0,0,SWP_DRAWFRAME|SWP_NOMOVE|SWP_NOSIZE);
		  InvalidateRect(ghWndDesign,NULL,TRUE);
			break;
		case WM_SIZE: 
		case WM_MOVE:
			{
			WINDOWPLACEMENT  wndpl;
			GetWindowPlacement(st->displayWnd, &wndpl);
			st->top=wndpl.rcNormalPosition.top;
			st->left=wndpl.rcNormalPosition.left;
			st->right=wndpl.rcNormalPosition.right;
			st->bottom=wndpl.rcNormalPosition.bottom;
			}
			st->redraw=1;
			InvalidateRect(hWnd,NULL,TRUE);
			break;

		case WM_ERASEBKGND:
			st->redraw=1;
			return 0;

		case WM_PAINT:
			draw_meter(st);
  	    	break;
		default:
			return DefWindowProc( hWnd, message, wParam, lParam );
    } 
    return 0;
}
Ejemplo n.º 3
0
LRESULT CALLBACK MeterWndHandler(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{   
	int t;
	THRESHOLDOBJ * st;
	

	st=NULL;
	for (t=0;(t<GLOBAL.objects)&&(st==NULL);t++)
		if (objects[t]->type==OB_THRESHOLD)
		{	st=(THRESHOLDOBJ *)objects[t];
		    if (st->displayWnd!=hWnd) st=NULL;
		}

	if (st==NULL) return DefWindowProc( hWnd, message, wParam, lParam );
	
	switch( message ) 
	{	case WM_DESTROY:
		 break;
		case WM_KEYDOWN:
			// printf("keydown: %ld, %ld\n",lParam,wParam);
		    switch(wParam) {
				case KEY_UP:
				  // step=st->gain/50; 
				  //if (step<1) step=1;
  				  st->from_input+=1;
	   			  InvalidateRect(st->displayWnd,NULL,TRUE);
				break;
				case KEY_DOWN:
				  // step=st->gain/50; 
				  // if (step<1) step=1;
  				  st->from_input-=1;
	   			  InvalidateRect(st->displayWnd,NULL,TRUE);
				break;
				}
		break;

		case WM_MOUSEACTIVATE:
   	      st->redraw=1;
		  close_toolbox();
		  actobject=st;
		  SetWindowPos(hWnd,HWND_TOP,0,0,0,0,SWP_DRAWFRAME|SWP_NOMOVE|SWP_NOSIZE);
		  InvalidateRect(ghWndDesign,NULL,TRUE);
			break;
		case WM_SIZE: 
		case WM_MOVE:
			{
			WINDOWPLACEMENT  wndpl;
			GetWindowPlacement(st->displayWnd, &wndpl);


			  if (GLOBAL.locksession) {
				  wndpl.rcNormalPosition.top=st->top;
				  wndpl.rcNormalPosition.left=st->left;
				  wndpl.rcNormalPosition.right=st->right;
				  wndpl.rcNormalPosition.bottom=st->bottom;
				  SetWindowPlacement(st->displayWnd, &wndpl);
 				  SetWindowLong(st->displayWnd, GWL_STYLE, GetWindowLong(st->displayWnd, GWL_STYLE)&~WS_SIZEBOX);
			  }
			  else {
				  st->top=wndpl.rcNormalPosition.top;
				  st->left=wndpl.rcNormalPosition.left;
				  st->right=wndpl.rcNormalPosition.right;
				  st->bottom=wndpl.rcNormalPosition.bottom;
				  st->redraw=TRUE;
				  SetWindowLong(st->displayWnd, GWL_STYLE, GetWindowLong(st->displayWnd, GWL_STYLE) | WS_SIZEBOX);
			  }
			  InvalidateRect(hWnd,NULL,TRUE);
			}
			break;

		case WM_ERASEBKGND:
			st->redraw=1;
			return 0;

		case WM_PAINT:
			draw_meter(st);
  	    	break;
		default:
			return DefWindowProc( hWnd, message, wParam, lParam );
    } 
    return 0;
}
Ejemplo n.º 4
0
BOOL load_configfile(LPCTSTR pszFileName)
{

    HANDLE hFile;
	int t, act_samplingrate=DEF_PACKETSPERSECOND; 
	int act_type,num_objects, save_toolbox, save_connected, try_connect;
	const char * d_name;
	char new_name[256],szdata[20];

	write_logfile("loading design configuration: %s",(char *)pszFileName);

    hFile = CreateFile(pszFileName, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, 0, NULL);
    if(hFile != INVALID_HANDLE_VALUE)
    {
		GLOBAL.loading=1;
		d_name=pszFileName;
		while (strstr(d_name,"\\")) d_name=strstr(d_name,"\\")+1;
		strcpy(new_name,"BrainBay - ");strcat(new_name,d_name);
	    SetWindowText(ghWndMain,new_name);
		strcpy(GLOBAL.configfile,pszFileName);
		save_settings();
		save_toolbox=-1;

		save_connected=TTY.CONNECTED;
		SendMessage(ghWndStatusbox,WM_COMMAND, IDC_STOPSESSION,0);
		
		//TTY.read_pause=1;
		close_captfile();

		if (ghWndAnimation!=NULL) SendMessage(ghWndAnimation,WM_CLOSE,0,0);
		ghWndAnimation=NULL;

		close_toolbox();actobject=NULL;
		//InvalidateRect(ghWndMain, NULL, TRUE);

		while (GLOBAL.objects>0)
		    free_object(0);

		GLOBAL.run_exception=0;
		GLOBAL.minimized=FALSE;

	     load_next_config_buffer(hFile);
		 load_property("objects",P_INT,&GLOBAL.objects);
		 load_property("main-top",P_INT,&GLOBAL.top);
		 load_property("main-left",P_INT,&GLOBAL.left);
		 load_property("main-right",P_INT,&GLOBAL.right);
		 load_property("main-bottom",P_INT,&GLOBAL.bottom);
		 load_property("anim-top",P_INT,&GLOBAL.anim_top);
		 load_property("anim-left",P_INT,&GLOBAL.anim_left);
		 load_property("anim-right",P_INT,&GLOBAL.anim_right);
		 load_property("anim-bottom",P_INT,&GLOBAL.anim_bottom);
		 load_property("design-top",P_INT,&GLOBAL.design_top);
		 load_property("design-left",P_INT,&GLOBAL.design_left);
		 load_property("design-right",P_INT,&GLOBAL.design_right);
		 load_property("design-bottom",P_INT,&GLOBAL.design_bottom);
		 load_property("tool-top",P_INT,&GLOBAL.tool_top);
		 load_property("tool-left",P_INT,&GLOBAL.tool_left);
		 load_property("tool-right",P_INT,&GLOBAL.tool_right);
		 load_property("tool-bottom",P_INT,&GLOBAL.tool_bottom);
		 load_property("showdesign",P_INT,&GLOBAL.showdesign);
		 load_property("hidestatus",P_INT,&GLOBAL.hidestatus);
		 load_property("showtoolbox",P_INT,&GLOBAL.showtoolbox);
		 load_property("autorun",P_INT,&GLOBAL.autorun);
		 load_property("minimized",P_INT,&GLOBAL.minimized);
		 save_toolbox=GLOBAL.showtoolbox;


		 TTY.PORT=0;try_connect=0;
		 load_property("comport",P_INT,&TTY.PORT);		 
		 load_property("connected",P_INT,&try_connect);	 
		 load_property("bidirect",P_INT,&TTY.BIDIRECT);
		 load_property("devicetype",P_INT,&TTY.devicetype);
		 load_property("samplingtype",P_INT,&TTY.samplingrate);
		 load_property("baudtype",P_INT,&TTY.BAUDRATE);
		 load_property("flow_control",P_INT,&TTY.FLOW_CONTROL);

		 if (save_connected) { update_p21state(); save_connected=TTY.CONNECTED; }
		 BreakDownCommPort();  
		 if (try_connect) { TTY.CONNECTED=SetupCommPort(TTY.PORT); update_p21state(); }
		
		 load_property("captfilename",P_STRING,CAPTFILE.filename);
		 load_property("captfiletype",P_INT,&CAPTFILE.filetype);
		 load_property("captfileoffset",P_INT,&CAPTFILE.offset);
	 	 load_property("dialoginterval",P_INT,&GLOBAL.dialog_interval);
		 load_property("drawinterval",P_INT,&GLOBAL.draw_interval);
		 load_property("samplingrate",P_INT,&act_samplingrate);
		 PACKETSPERSECOND=act_samplingrate;

		 MoveWindow(ghWndMain,GLOBAL.left,GLOBAL.top,GLOBAL.right-GLOBAL.left,GLOBAL.bottom-GLOBAL.top,TRUE);
		 MoveWindow(ghWndDesign,GLOBAL.design_left,GLOBAL.design_top,GLOBAL.design_right-GLOBAL.design_left,GLOBAL.design_bottom-GLOBAL.design_top,TRUE);
		 if (!GLOBAL.showdesign)
		 {  
			 ShowWindow(ghWndDesign, FALSE); 
			 SetDlgItemText(ghWndStatusbox,IDC_DESIGN,"Show Design"); 
		 }
		 else 
		 {
			 ShowWindow(ghWndDesign,TRUE);
		     SetWindowPos(ghWndDesign,0,0,0,0,0,SWP_DRAWFRAME|SWP_NOMOVE|SWP_NOSIZE);
			 SetDlgItemText(ghWndStatusbox,IDC_DESIGN,"Hide Design"); 
		 }
		 if (!GLOBAL.hidestatus)
		 	 ShowWindow(ghWndStatusbox, TRUE); 
		 else	 ShowWindow(ghWndStatusbox,FALSE);
		     
		 num_objects=GLOBAL.objects;
		 GLOBAL.objects=0;
   		 for (t=0;t<num_objects;t++)
		 {
			act_type=load_next_config_buffer(hFile);
			if (act_type>=0)
			{	
				create_object(act_type);
				if (actobject != NULL )
				{
					actobject->load(hFile);
					link_object(actobject);
				}
				else critical_error("Could not load all objects, quitting ...\ndelete brainbay.cfg to prevent this at program startup ... ");

			}
		 }
		 CloseHandle(hFile);
		 for (t=0;t<num_objects;t++) objects[t]->update_inports();
		 update_dimensions();

		 CAPTFILE.filehandle=INVALID_HANDLE_VALUE;
		 CAPTFILE.do_read=0;
		 if (strcmp(CAPTFILE.filename,"none"))
		 {
			 char st[150];
			 reduce_filepath(st,CAPTFILE.filename);
			 strcpy(CAPTFILE.filename,GLOBAL.resourcepath);
			 strcat(CAPTFILE.filename,"ARCHIVES\\");
			 strcat(CAPTFILE.filename,st);			 
			 open_captfile(CAPTFILE.filename);
		 }

		 init_system_time();
		 reset_oscilloscopes();
		 PACKET.readstate=0;
		 ShowWindow( ghWndMain, TRUE ); UpdateWindow( ghWndMain ); 

 		 update_samplingrate(act_samplingrate);
		 update_devicetype();
		 get_session_length();


		 SetDlgItemInt(ghWndStatusbox,IDC_SAMPLINGRATE,act_samplingrate,0);
		 SetDlgItemText(ghWndStatusbox,IDC_STATUS,"Configuration loaded");
		 SetDlgItemText(ghWndStatusbox,IDC_TIME,"0.0");
		 SetDlgItemText(ghWndStatusbox,IDC_JUMPPOS,"0.0");
		 sprintf(szdata, "%.1f", (float)GLOBAL.session_length/(float)PACKETSPERSECOND);
		 SetDlgItemText(ghWndStatusbox,IDC_SESSLEN,szdata);
 		 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);

		 SetWindowPos(ghWndMain,0,0,0,0,0,SWP_NOMOVE|SWP_NOSIZE);
		 InvalidateRect(ghWndMain,NULL,TRUE);
 		 InvalidateRect(ghWndDesign,NULL,TRUE);

		 SendMessage(GetDlgItem(ghWndStatusbox,IDC_SESSIONPOS),TBM_SETSELSTART,TRUE,0);
		 SendMessage(GetDlgItem(ghWndStatusbox,IDC_SESSIONPOS),TBM_SETSELEND,TRUE,1000);
		 SendMessage(GetDlgItem(ghWndStatusbox,IDC_SESSIONPOS),TBM_SETPOS,TRUE,(LONG)(0));
		 if (GLOBAL.minimized) ShowWindow(ghWndMain, SW_MINIMIZE);

		 GLOBAL.loading=0;
		 if ((GLOBAL.autorun) && (!GLOBAL.run_exception)) SendMessage(ghWndStatusbox,WM_COMMAND, IDC_RUNSESSION,0);
  	    
		 if (save_toolbox!=-1)
		 {
			GLOBAL.showtoolbox=save_toolbox;
			actobject=objects[GLOBAL.showtoolbox];
			actobject->make_dialog();
		 } 
		 
		write_logfile("load successful");
		return TRUE;
		 
    }
	write_logfile("could not load design configuration file.");
	return FALSE;    	
}
Ejemplo n.º 5
0
void create_object(int type)
{
	int i;

	close_toolbox();
	write_logfile("creating object: %s",objnames[type]);


	switch(type) 
	{ 
		case OB_EEG:		 actobject=new EEGOBJ(GLOBAL.objects); 
							 deviceobject=actobject;
							 actobject->object_size=sizeof(EEGOBJ);break;
		case OB_MIDI:		 actobject=new MIDIOBJ(GLOBAL.objects);
							 actobject->object_size=sizeof(MIDIOBJ);break;
		case OB_OSCI:		 actobject=new OSCIOBJ(GLOBAL.objects);
							 actobject->object_size=sizeof(OSCIOBJ);break;
		case OB_FFT:		 actobject=new FFTOBJ(GLOBAL.objects); 
							 actobject->object_size=sizeof(FFTOBJ);break;
		case OB_THRESHOLD:	 actobject=new THRESHOLDOBJ(GLOBAL.objects); 
							 actobject->object_size=sizeof(THRESHOLDOBJ);break;
		case OB_FILTER:		 actobject=new FILTEROBJ(GLOBAL.objects);
							 actobject->object_size=sizeof(FILTEROBJ);break;
		case OB_MAGNITUDE:	 actobject=new MAGNITUDEOBJ(GLOBAL.objects); 
							 actobject->object_size=sizeof(MAGNITUDEOBJ);break;
		case OB_PARTICLE:	 actobject=new PARTICLEOBJ(GLOBAL.objects); 
							 actobject->object_size=sizeof(PARTICLEOBJ);break;
		case OB_TRANSLATE:	 actobject=new TRANSLATEOBJ(GLOBAL.objects);
							 actobject->object_size=sizeof(TRANSLATEOBJ);break;
		case OB_SIGNAL:		 actobject=new SIGNALOBJ(GLOBAL.objects); 
							 actobject->object_size=sizeof(SIGNALOBJ);break;
		case OB_AND:		 actobject=new ANDOBJ(GLOBAL.objects); 
							 actobject->object_size=sizeof(ANDOBJ);break;
		case OB_OR:			 actobject=new OROBJ(GLOBAL.objects);
							 actobject->object_size=sizeof(OROBJ);break;
		case OB_NOT:		 actobject=new NOTOBJ(GLOBAL.objects); 
							 actobject->object_size=sizeof(NOTOBJ);break;
		case OB_WAV:		 actobject=new WAVOBJ(GLOBAL.objects); 
							 actobject->object_size=sizeof(WAVOBJ);break;
		case OB_TCP_RECEIVER:actobject=new TCP_RECEIVEOBJ(GLOBAL.objects); 
							 actobject->object_size=sizeof(TCP_RECEIVEOBJ);break;
		case OB_DOKU:        actobject=new DOKUOBJ(GLOBAL.objects); 
							 actobject->object_size=sizeof(DOKUOBJ);break;
		case OB_EVAL:		 actobject=new EVALOBJ(GLOBAL.objects); 
							 actobject->object_size=sizeof(EVALOBJ);break;
		case OB_AVI:		 actobject=new AVIOBJ(GLOBAL.objects); 
							 actobject->object_size=sizeof(AVIOBJ);break;
		case OB_AVERAGE:	 actobject=new AVERAGEOBJ(GLOBAL.objects); 
							 actobject->object_size=sizeof(AVERAGEOBJ);break;
		case OB_CORR:		 actobject=new CORRELATIONOBJ(GLOBAL.objects); 
							 actobject->object_size=sizeof(CORRELATIONOBJ);break;
		case OB_EDF_READER:	 actobject=new EDF_READEROBJ(GLOBAL.objects); 
							 actobject->object_size=sizeof(EDF_READEROBJ);break;
		case OB_EDF_WRITER:	 actobject=new EDF_WRITEROBJ(GLOBAL.objects); 
							 actobject->object_size=sizeof(EDF_WRITEROBJ);break;
		case OB_TCP_SENDER:	 actobject=new TCP_SENDEROBJ(GLOBAL.objects); 
							 actobject->object_size=sizeof(TCP_SENDEROBJ);break;
		case OB_COMPARE:	 actobject=new COMPAREOBJ(GLOBAL.objects);
							 actobject->object_size=sizeof(COMPAREOBJ);break;
		case OB_BALLGAME:	 actobject=new BALLGAMEOBJ(GLOBAL.objects); 
							 actobject->object_size=sizeof(BALLGAMEOBJ);break;
		case OB_MIXER4:		 actobject=new MIXER4OBJ(GLOBAL.objects); 
							 actobject->object_size=sizeof(MIXER4OBJ);break;
		case OB_MOUSE:		 actobject=new MOUSEOBJ(GLOBAL.objects); 
							 actobject->object_size=sizeof(MOUSEOBJ);break;
		case OB_ERPDETECT:   actobject=new ERPDETECTOBJ(GLOBAL.objects); 
							 actobject->object_size=sizeof(ERPDETECTOBJ);break;
		case OB_COM_WRITER:  actobject=new COM_WRITEROBJ(GLOBAL.objects);
							 actobject->object_size=sizeof(COM_WRITEROBJ);break;
		case OB_CAM:		 actobject=new CAMOBJ(GLOBAL.objects); 
							 actobject->object_size=sizeof(CAMOBJ);break;
		case OB_INTEGRATE:	 actobject=new INTEGRATEOBJ(GLOBAL.objects);
							 actobject->object_size=sizeof(INTEGRATEOBJ);break;
		case OB_DEBOUNCE:	 actobject=new DEBOUNCEOBJ(GLOBAL.objects); 
							 actobject->object_size=sizeof(DEBOUNCEOBJ);break;
		case OB_SAMPLE_HOLD: actobject=new SAMPLE_HOLDOBJ(GLOBAL.objects);
							 actobject->object_size=sizeof(SAMPLE_HOLDOBJ);break;
		case OB_CONSTANT:    actobject=new CONSTANTOBJ(GLOBAL.objects); 
							 actobject->object_size=sizeof(CONSTANTOBJ);break;
        case OB_MATLAB: 	 actobject=new MATLABOBJ(GLOBAL.objects); 
							 actobject->object_size=sizeof(MATLABOBJ);break;
        case OB_COUNTER: 	 actobject=new COUNTEROBJ(GLOBAL.objects); 
							 actobject->object_size=sizeof(COUNTEROBJ);break;
#ifndef MINGW
        case OB_SKINDIALOG:  actobject=new SKINDIALOGOBJ(GLOBAL.objects); 
							 actobject->object_size=sizeof(SKINDIALOGOBJ);break;
#endif
        case OB_FILE_WRITER: actobject=new FILE_WRITEROBJ(GLOBAL.objects); 
							 actobject->object_size=sizeof(FILE_WRITEROBJ);break;
        case OB_DEVIATION:   actobject=new DEVIATIONOBJ(GLOBAL.objects); 
							 actobject->object_size=sizeof(DEVIATIONOBJ);break;
		case OB_MCIPLAYER:   actobject=new MCIOBJ(GLOBAL.objects);
							 actobject->object_size=sizeof(MCIOBJ);break;
		case OB_KEYSTRIKE:   actobject=new KEYSTRIKEOBJ(GLOBAL.objects); 
							 actobject->object_size=sizeof(KEYSTRIKEOBJ);break;
		case OB_PEAKDETECT:  actobject=new PEAKDETECTOBJ(GLOBAL.objects); 
							 actobject->object_size=sizeof(PEAKDETECTOBJ);break;
		case OB_SPELLER:	 actobject=new SPELLEROBJ(GLOBAL.objects); 
							 actobject->object_size=sizeof(SPELLEROBJ);break;
		case OB_MARTINI:	 actobject=new MARTINIOBJ(GLOBAL.objects); 
							 actobject->object_size=sizeof(MARTINIOBJ);break;
		case OB_FILE_READER: actobject=new FILE_READEROBJ(GLOBAL.objects); 
							 actobject->object_size=sizeof(FILE_READEROBJ);break;
		case OB_PORT_IO:	 actobject=new PORTOBJ(GLOBAL.objects); 
							 actobject->object_size=sizeof(PORTOBJ);break;
		case OB_ARRAY3600:   actobject=new ARRAY3600OBJ(GLOBAL.objects);
							 actobject->object_size=sizeof(ARRAY3600OBJ);break;
		case OB_COMREADER:   actobject=new COMREADEROBJ(GLOBAL.objects); 
							 actobject->object_size=sizeof(COMREADEROBJ);break;
		case OB_NEUROBIT:      actobject=new NEUROBITOBJ(GLOBAL.objects); 
							 deviceobject=actobject;
							 actobject->object_size=sizeof(NEUROBITOBJ);break;
		case OB_MIN:		 actobject=new MINOBJ(GLOBAL.objects); 
							 actobject->object_size=sizeof(MINOBJ);break;
		case OB_MAX:         actobject=new MAXOBJ(GLOBAL.objects); 
							 actobject->object_size=sizeof(MAXOBJ);break;
		case OB_ROUND:      actobject=new ROUNDOBJ(GLOBAL.objects); 
							 actobject->object_size=sizeof(ROUNDOBJ);break;
		case OB_DIFFERENTIATE:      actobject=new DIFFERENTIATEOBJ(GLOBAL.objects); 
							 actobject->object_size=sizeof(DIFFERENTIATEOBJ);break;
		case OB_DELAY:      actobject=new DELAYOBJ(GLOBAL.objects); 
							 actobject->object_size=sizeof(DELAYOBJ);break;
		case OB_LIMITER:      actobject=new LIMITEROBJ(GLOBAL.objects); 
							 actobject->object_size=sizeof(LIMITEROBJ);break;
		case OB_EMOTIV:		 actobject=new EMOTIVOBJ(GLOBAL.objects);
							 deviceobject=actobject;
							 actobject->object_size=sizeof(EMOTIVOBJ);break;
		case OB_FLOATVECTOR: actobject=new FLOATVECTOROBJ(GLOBAL.objects); 
							 actobject->object_size=sizeof(FLOATVECTOROBJ);break;
		case OB_VECTORFLOAT: actobject=new VECTORFLOATOBJ(GLOBAL.objects); 
							 actobject->object_size=sizeof(VECTORFLOATOBJ);break;
		case OB_DISPLAYVECTOR: actobject=new DISPLAYVECTOROBJ(GLOBAL.objects); 
							 actobject->object_size=sizeof(DISPLAYVECTOROBJ);break;
		case OB_BUFFER: actobject=new BUFFEROBJ(GLOBAL.objects); 
							 actobject->object_size=sizeof(BUFFEROBJ);break;

	}
	if (actobject)
	{
		actobject->type = type;
		actobject->xPos=50; actobject->yPos=40;
		i=actobject->inports;
        if (i<actobject->outports) i=actobject->outports;
		if (!actobject->width) actobject->width=55; 
		if (!actobject->height) actobject->height=CON_START+i*CON_HEIGHT+5;
		if (!actobject->tag[0]) strcpy(actobject->tag,objnames[type]);

		for (i=0;i<MAX_CONNECTS;i++)
		{ 
		   actobject->out[i].from_object=GLOBAL.objects; actobject->out[i].from_port=-1;
		   actobject->out[i].to_object=-1; actobject->out[i].to_port=-1; 
		   strcpy(actobject->out[i].dimension,"uV");
		   actobject->out[i].min=-250;actobject->out[i].max=250;
		}
		objects[GLOBAL.objects]=actobject;
		GLOBAL.objects++;
        if (!GLOBAL.loading)
		{
			actobject->make_dialog();
//			InvalidateRect(ghWndMain,NULL,TRUE);
			InvalidateRect(ghWndDesign,NULL,TRUE);

		}
		if (actobject->displayWnd)   SetForegroundWindow(actobject->displayWnd);

	}
}
Ejemplo n.º 6
0
DWORD WINAPI CamProc(LPVOID lpv)
{
	l_t=SDL_GetTicks();
    HANDLE     hArray[1];
	DWORD dwRes;
	BOOL CamThreadDone=FALSE;
	MSG msg;

	hArray[0] = CamExitEvent;


	    char fname[256];
	//if (!capture)
	//{

	  if ((camobj->mode == 2) && (strstr(camobj->videofilename,".avi"))) capture = cvCaptureFromAVI( camobj->videofilename );
       else capture = cvCaptureFromCAM( 0 );
	  

      if((!capture ) && (camobj->mode!=1))
	  {
		if (!GLOBAL.loading) close_toolbox();
   		report_error("Could not connect to WebCamera");		
	  }
 
	  strcpy(fname,GLOBAL.resourcepath);
	  strcat(fname,cascade_name);
	  
	  cascade = (CvHaarClassifierCascade*)cvLoad( fname, 0, 0, 0 );
	  if( !cascade ) 
	  {	
		  SetDlgItemText(ghWndStatusbox, IDC_STATUS,"ERROR: Could not load classifier cascade");
	      return(0); 
	  }
    
      storage = cvCreateMemStorage(0);

   	  if (camobj->showlive)
	  {
		cvNamedWindow( "Camera", 0 );
	    cvMoveWindow("Camera",0,0);
        cvSetMouseCallback( "Camera", on_mouse, 0 );

	  }



	while (!CamThreadDone) 
	{
           dwRes = WaitForMultipleObjects(1, hArray, FALSE, 0);
 
            switch(dwRes)
            {
                case WAIT_OBJECT_0: 
                    CamThreadDone = TRUE;
		        case WAIT_TIMEOUT:   // timeouts are not reported
                    break;                       

                default:
                   // report_error("WaitForMultipleObjects(CamExitEvent) does not return");
                    break;
			}

			if(!GetMessage(&msg, NULL, 0, 0)) break;
				TranslateMessage(&msg);	
				DispatchMessage(&msg);	

			a_t=SDL_GetTicks();
			if (a_t-l_t>update_rate)
			{

		        frame = cvQueryFrame( capture );
				
				lk_work(camobj);
				cur_rate=a_t-l_t;
				l_t=a_t;
			}
			else 
			Sleep(3);
			
	}
	return(1);
}
Ejemplo n.º 7
0
//
//  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;
}
Ejemplo n.º 8
0
LRESULT CALLBACK AVIWndHandler(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    int t;
    AVIOBJ * st;

    st=NULL;

    for (t=0; (t<GLOBAL.objects)&&(st==NULL); t++)
        if (objects[t]!=NULL)
            if (objects[t]->type==OB_AVI)
            {   st=(AVIOBJ *)objects[t];
                if (st!=NULL) if (st->displayWnd!=hWnd) st=NULL;
            }

    if (st!=NULL)
        switch( message )
        {

        case WM_DESTROY:
            Shutdown_GL(st->GLRC);
            break;
        case WM_KEYDOWN:
            SendMessage(ghWndMain, message,wParam,lParam);
            break;
        case WM_ACTIVATE:
            if (wParam==WA_CLICKACTIVE)
            {
                close_toolbox();
                actobject=st;
//		  actobject->make_dialog();
                SetActiveWindow(hWnd);
                SetFocus(hWnd);
            }
            break;

        case WM_COMMAND:
            break;
        case WM_SIZE:
        //	Size_GL(hWnd, st->GLRC,1);
        case WM_MOVE:
        {
            WINDOWPLACEMENT  wndpl;
            GetWindowPlacement(st->displayWnd, &wndpl);
            st->top=wndpl.rcNormalPosition.top;
            st->left=wndpl.rcNormalPosition.left;
            st->right=wndpl.rcNormalPosition.right;
            st->bottom=wndpl.rcNormalPosition.bottom;
        }
        InvalidateRect(st->displayWnd,NULL,FALSE);
        break;

        case WM_PAINT:
        {
            PAINTSTRUCT ps;
            HDC	hDC = BeginPaint(hWnd, &ps);

            if (strcmp(st->avifile,"none"))
            {
                wglMakeCurrent(hDC, st->GLRC);
                //glLoadIdentity ();													// Reset The Modelview Matrix
                //glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);		// Clear Screen And Depth Buffer
                st->GrabAVIFrame(st->frame,hDC);										// Grab A Frame From The AVI
                wglMakeCurrent(0, 0);
            }
            EndPaint(hWnd, &ps);

        }
        break;

        default:
            return DefWindowProc( hWnd, message, wParam, lParam );
        }
    else 	return DefWindowProc( hWnd, message, wParam, lParam );
    return 0;
}
Ejemplo n.º 9
0
LRESULT CALLBACK ButtonWndHandler(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{   
	int t;
	BUTTONOBJ * st;
	st=NULL;
	for (t=0;(t<GLOBAL.objects)&&(st==NULL);t++)
		if (objects[t]->type==OB_BUTTON)
		{	st=(BUTTONOBJ *)objects[t];
		    if (st->displayWnd!=hWnd) st=NULL;
		}

	if (st==NULL) return DefWindowProc( hWnd, message, wParam, lParam );
	
	switch( message ) 
	{	case WM_DESTROY:
		 break;
		case WM_MOUSEACTIVATE:
   	      st->redraw=1;
		  close_toolbox();
		  actobject=st;
		  SetWindowPos(hWnd,HWND_TOP,0,0,0,0,SWP_DRAWFRAME|SWP_NOMOVE|SWP_NOSIZE);
		  InvalidateRect(ghWndDesign,NULL,TRUE);
		break;

		case WM_LBUTTONDOWN:
			{  int actx,acty,minpoint,i;
			   float actdist,mindist;
			   actx=(int)LOWORD(lParam);
			   acty=(int)HIWORD(lParam);
			   printf("button pressed in wnd %ld at: %ld, %ld\n",hWnd, actx,acty);
			   // if (distance (actx, acty, NAVI_X+170, NAVI_Y+33) < NAVI_SELECTDISTANCE) SendMessage(hWnd, WM_KEYDOWN, KEY_BACKSPACE,0); 
			   switch (st->buttonfunction) {
				   case BUTTONFUNCTION_PLAYSESSION:
						SendMessage(ghWndStatusbox,WM_COMMAND,IDC_RUNSESSION,0);
					break;
				   case BUTTONFUNCTION_STOPSESSION:
						SendMessage(ghWndStatusbox,WM_COMMAND,IDC_STOPSESSION,0);
					break;
				   case BUTTONFUNCTION_ENDSESSION:
						SendMessage(ghWndStatusbox,WM_COMMAND,IDC_ENDSESSION,0);
					break;
				   case BUTTONFUNCTION_VAL1VAL2:
				   case BUTTONFUNCTION_VAL1INV:
						st->state=STATE_PRESSED;
					break;
				   case BUTTONFUNCTION_TOGGLEVAL:
						st->togglecount=!(st->togglecount);
					break;
				   case BUTTONFUNCTION_TOGGLE1SEC:
						st->state=STATE_PRESSED;
						st->togglecount=1;
					break;
				   case BUTTONFUNCTION_DEVSETTINGS:
						SendMessage(ghWndMain,WM_COMMAND,IDM_DEVICESETTINGS,0);
					break;
				   case BUTTONFUNCTION_APPSETTINGS:
						SendMessage(ghWndMain,WM_COMMAND,IDM_SETTINGS,0);
					break;
			   }
			}
			break;

		case WM_GETMINMAXINFO:
		{
			MINMAXINFO* mmi = (MINMAXINFO*)lParam;
			//mmi->ptMaxSize.x = 10;
			//mmi->ptMaxSize.y = 10;
			mmi->ptMinTrackSize.x = 5;
			mmi->ptMinTrackSize.y = 5;
			//mmi->ptMaxTrackSize.x = 10;
			//mmi->ptMaxTrackSize.y = 10;
			return 0;
		}
		case WM_SIZE: 
		case WM_MOVE:
			{
  			  WINDOWPLACEMENT  wndpl;
			  GetWindowPlacement(st->displayWnd, &wndpl);
  	 	      st->redraw=TRUE;

			  if (GLOBAL.locksession) {
				  wndpl.rcNormalPosition.top=st->top;
				  wndpl.rcNormalPosition.left=st->left;
				  wndpl.rcNormalPosition.right=st->right;
				  wndpl.rcNormalPosition.bottom=st->bottom;
				  SetWindowPlacement(st->displayWnd, &wndpl);


				  //if (st->displayborder) SetWindowLong(st->displayWnd, GWL_STYLE, (WS_CLIPSIBLINGS| WS_CHILD | WS_CAPTION | WS_THICKFRAME )&~WS_SIZEBOX);
				  // else SetWindowLong(st->displayWnd, GWL_STYLE, 0);
				  SetWindowLong(st->displayWnd, GWL_STYLE, GetWindowLong(st->displayWnd, GWL_STYLE)&~WS_SIZEBOX);
				 // if (st->displayborder) SetWindowLong(st->displayWnd, GWL_STYLE, GetWindowLong(st->displayWnd, GWL_STYLE)&~WS_SIZEBOX);
				 // else SetWindowLong(st->displayWnd, GWL_STYLE, 0);
			  }
			  else {
				  st->top=wndpl.rcNormalPosition.top;
				  st->left=wndpl.rcNormalPosition.left;
				  st->right=wndpl.rcNormalPosition.right;
				  st->bottom=wndpl.rcNormalPosition.bottom;
				  st->redraw=TRUE; 
				  st->redraw=TRUE;
				  // SetWindowLong(st->displayWnd, GWL_STYLE, (WS_CLIPSIBLINGS| WS_CHILD | WS_CAPTION | WS_THICKFRAME | WS_SIZEBOX));
				  SetWindowLong(st->displayWnd, GWL_STYLE, GetWindowLong(st->displayWnd, GWL_STYLE) | WS_SIZEBOX);
			  }
			  update_border(st->displayWnd,st->displayborder);

			  InvalidateRect(hWnd,NULL,TRUE);
			}
			break;

		case WM_ERASEBKGND:
			st->redraw=1;
			return 0;

		case WM_PAINT:
			draw_button(st);
  	    	break;
		default:
			return DefWindowProc( hWnd, message, wParam, lParam );
    } 
    return 0;
}