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

📄 virdisplay.c

📁 The combined demo is dedicated for S1C33L05, so DMT33L05 should be used to load and run the demo. F
💻 C
字号:
//      Copyright (C) SEIKO EPSON CORP. 2004 
//
//      GROUP					: SEE LSI
//      FILE                    : virdisplay.c
//      MODULE                  : virtual display
//      Function description    : application 
//      Revision history        :                                                                                               
//                                Date            userName        	Description
//                                2004/06/22       David.Ji		      	start
//
//      Notes                   : 
//
//---------------------------------------------------------------------------------
//---------------------------------------------------------------------------------
// Include files (#include)
//---------------------------------------------------------------------------------
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "ros33.h"
#include "sysGUI.h"
#include "appres.h"

#define IDC_CTRL1     100
#define IDC_CTRL2     110
#define IDC_CTRL3     120
#define IDC_CTRL4     130
#define	IDC_CTRL5	  140
#define	IDC_CTRL6	  150
#define	IDC_CTRL7	  170
#define	IDC_CTRL8	  180
#define	IDC_CTRL9	  190

T_MODULE T_WORD VirDsp_InitRes();
T_MODULE T_WORD VirDsp_FreeRes();

/******************************************************************
 * FUNCTION: VirWinProc(
 *
 * PURPOSE:
 *		dict win proc
 *
 * PARAMETERS
 *    Input:
 *    Output:
 *    InOut:
 *
 * Return value:
 *
 * Reentrant : No
*****************************************************************/
T_BYTE *pButtonVirBuf[7];

T_WORD VirWinProc(T_GUI_HWND hWnd, T_WORD message, T_GUI_WPARAM wParam, T_GUI_LPARAM lParam)
{
	T_MODULE T_GUI_HWND hChildWnd1, hChildWnd2,	hChildWnd3, hChildWnd4, hChildWnd5,
						hChildWnd6, hChildWnd7, hChildWnd8, hChildWnd9;
	T_GUI_HDC hdcsrc, hdcdes, hMemdc;

	T_MODULE T_WORD	iMoveStepX, iMoveStepY, iStretchLevel;
    T_MODULE T_GUI_Rect rc;
    
    T_MODULE T_GUI_Bitmap* pButtonBmp[7];
	
	T_BYTE temp[8];
	
    switch (message)
    {
		case MSG_CREATE:
		{
			T_GUI_HDC hdc;
			T_WORD i;
			hdc = fnGUI_BeginPaint(hWnd);

			if(VirDsp_InitRes() != 1)			
			{
				for(i =0; i<7; i++)	
        			pButtonVirBuf[i]=(T_BYTE*)pSysButton;
			}

			for(i=0; i<7; i++)
			{
				pButtonBmp[i] = (T_GUI_Bitmap *) calloc(1,sizeof(T_GUI_Bitmap));
				fnGUI_LoadBitmapFromBmpMemory(hdc,pButtonBmp[i],pButtonVirBuf[i]);
			}
	
			hChildWnd1 = fnGUI_CreateWindow (CTRL_BUTTON,//up
              						"",
              						WS_CHILD| WS_VISIBLE 
              						|STY_BTN_BITMAP,
									IDC_CTRL1,
									145, 32, 20, 20, hWnd,
									(T_UWORD)pButtonBmp[0] );

            hChildWnd2 = fnGUI_CreateWindow (CTRL_BUTTON,//down
              						"",
              						WS_CHILD| WS_VISIBLE 
              						|STY_BTN_BITMAP,
									IDC_CTRL2,
									145, 82, 20, 20, hWnd,
									(T_UWORD)pButtonBmp[1]);
									
			hChildWnd3 = fnGUI_CreateWindow (CTRL_BUTTON,//left
              						"",
              						WS_CHILD| WS_VISIBLE
									|STY_BTN_BITMAP,
									IDC_CTRL3,
									120, 57, 20, 20, hWnd,
									(T_UWORD)pButtonBmp[2]);
									
            hChildWnd4 = fnGUI_CreateWindow (CTRL_BUTTON,//right	
              						"",	
              						WS_CHILD| WS_VISIBLE
									|STY_BTN_BITMAP,
									IDC_CTRL4,
									170, 57, 20, 20, hWnd,
									(T_UWORD)pButtonBmp[3]);
									
			hChildWnd5 = fnGUI_CreateWindow (CTRL_BUTTON,// zoom out
              						"",
              						WS_CHILD| WS_VISIBLE
									|STY_BTN_BITMAP,
									IDC_CTRL5,
									120, 5, 18, 18, hWnd,
									(T_UWORD)pButtonBmp[5]);
									
            hChildWnd6 = fnGUI_CreateWindow (CTRL_BUTTON,//zoom in
              						"",
              						WS_CHILD| WS_VISIBLE
									|STY_BTN_BITMAP,
									IDC_CTRL6,
									140, 5, 18, 18, hWnd,
									(T_UWORD)pButtonBmp[6]);
			
			hChildWnd7 = fnGUI_CreateWindow (CTRL_STATIC,
              						 "",
                                     WS_CHILD | WS_VISIBLE | WS_BORDER,
                                     IDC_CTRL7,
                                     8, 8, 102, 102, hWnd, 0);
                                     
            hChildWnd8 = fnGUI_CreateWindow (CTRL_BUTTON,//exit	
              						"",	
              						WS_CHILD| WS_VISIBLE
									|STY_BTN_BITMAP,
									IDC_CTRL8,
									145, 57, 20, 20, hWnd,
									(T_UWORD)pButtonBmp[4]);
									
			hChildWnd9 = fnGUI_CreateWindow (CTRL_EDIT,
              							 "Lev4",
                                         WS_CHILD | WS_VISIBLE | WS_BORDER,
                                         IDC_CTRL9,
                                         160, 5, 35, 18, hWnd, 0);
									
			rc.left = 10;
			rc.top = 10;
			rc.right = 110;
			rc.bottom = 110;								
			iMoveStepX = iMoveStepY = 0;
			iStretchLevel = 4;

            fnGUI_EndPaint(hWnd,hdc);
	   	    fnGUI_MoveWindow(hWnd, 60,40,205,145, 1);
	   	    fnGUI_InvalidateRect(hWnd, &rc, 0);
	    }    
		break;
		
    	case MSG_PAINT:
    	{
    	     fnGUI_GetDesktopRect(&rc.left, &rc.top, &rc.right, &rc.bottom);
             
             hdcsrc =  fnGUI_GetDC(HWND_DESKTOP);
             hdcdes = fnGUI_GetClientDC(hWnd);
             
             hMemdc = fnGUI_CreateCompatibleDC(hdcsrc);
             fnGUI_BitBlt (hdcsrc, 0, 0, 320, 240, hMemdc, 0, 0, 0);
             
             fnGUI_StretchBlt(hMemdc, iMoveStepX*32, iMoveStepY*24, 32*iStretchLevel, 24*iStretchLevel, hdcdes, 10, 10, 100, 100, 0);
             
             fnGUI_DeleteCompatibleDC(hMemdc);
	         fnGUI_ReleaseDC(hdcdes);
    	     fnGUI_ReleaseDC(hdcsrc);
		}
		break;
    	
        case MSG_COMMAND:
        {
            T_WORD id   = LOUHWORD(wParam);
            T_WORD code = HIUHWORD(wParam);
            
            switch (id)
            {
                case IDC_CTRL1://up
                {
                	iMoveStepY --;
                	if(iMoveStepY == -1)
                		iMoveStepY = 0;
                		
                }
                fnGUI_InvalidateRect(hWnd, &rc, 0);
                break;

                case IDC_CTRL2://down
                {
                	iMoveStepY ++;
                	if(iMoveStepY+iStretchLevel > 10)
                		iMoveStepY --;
                }
                fnGUI_InvalidateRect(hWnd, &rc, 0);
                break;
				
				case IDC_CTRL3://left
				{
                	iMoveStepX --;
                	if(iMoveStepX == -1)
                		iMoveStepX = 0;
                		
                }
				fnGUI_InvalidateRect(hWnd, &rc, 0);
				break;
				
				case IDC_CTRL4://right
				{
                	
                	iMoveStepX ++;
                	if((iMoveStepX+iStretchLevel)> 10)
                		iMoveStepX --;
                }
				fnGUI_InvalidateRect(hWnd, &rc, 0);
				break;

				case IDC_CTRL5://Zoom in
				{
					iStretchLevel --;
					if(iStretchLevel == 0)
						iStretchLevel = 1;
                }
				sprintf(temp,"Lev%d",iStretchLevel);
				fnGUI_SendMessage ( hChildWnd9, MSG_SETTEXT, 0, (T_GUI_LPARAM)temp);	
                fnGUI_InvalidateRect(hWnd, &rc, 0);
                break;

				case IDC_CTRL6://Zoom out
				{
					iStretchLevel ++;
					if(iStretchLevel > 10)
						iStretchLevel = 10;
					if((iMoveStepX+iStretchLevel)> 10)
						iMoveStepX--;
					if((iMoveStepY+iStretchLevel)> 10)
						iMoveStepY--;
                
                }
                sprintf(temp,"Lev%d",iStretchLevel);
				fnGUI_SendMessage ( hChildWnd9, MSG_SETTEXT, 0, (T_GUI_LPARAM)temp);	
                fnGUI_InvalidateRect(hWnd, &rc, 0);
                break;
                
				case IDC_CTRL8://exit
					fnGUI_PostMessage (hWnd, MSG_CLOSE, 0, 0);
                break;
                default:
                break;
            }
            
        }
        break;
        
        case MSG_TIMER:
		break;
		
		case MSG_CHAR:
		break;

        case MSG_CLOSE:
        {
        	T_WORD i;	

       		for(i =0; i<7; i++)
        	{
	        	fnGUI_UnLoadBitmap(pButtonBmp[i]);	
	    	}
	    	VirDsp_FreeRes();
    	    fnGUI_DestroyMainWindow (hChildWnd1 );
        	fnGUI_DestroyMainWindow (hChildWnd2 );
        	fnGUI_DestroyMainWindow (hChildWnd3 );
        	fnGUI_DestroyMainWindow (hChildWnd4 );
        	fnGUI_DestroyMainWindow (hChildWnd5 );
        	fnGUI_DestroyMainWindow (hChildWnd6 );
        	fnGUI_DestroyMainWindow (hChildWnd7 );
        	fnGUI_DestroyMainWindow (hChildWnd8 );
			fnGUI_DestroyMainWindow (hChildWnd9 );
			fnGUI_DestroyMainWindow (hWnd);
		}
        break;
    }

    return fnGUI_DefaultMainWinProc(hWnd, message, wParam, lParam);
    
}

/******************************************************************
 * FUNCTION: Dict_InitRes()
 *
 * PURPOSE:
 *
 * PARAMETERS
 * Return value:
*****************************************************************/
T_MODULE T_WORD VirDsp_InitRes()
{
		T_BYTE *pBmpBuf;
				
        pBmpBuf = (char *)ComFS_Loadfile("system\\vup.bmp");
        if(pBmpBuf == 0)
        	return -1;
        pButtonVirBuf[0] = pBmpBuf;
        
        pBmpBuf = (char *)ComFS_Loadfile("system\\vdown.bmp");
        if(pBmpBuf == 0)
        	return -1;
        pButtonVirBuf[1] = pBmpBuf;
        
        pBmpBuf = (char *)ComFS_Loadfile("system\\vleft.bmp");
        if(pBmpBuf == 0)
        	return -1;
        pButtonVirBuf[2] = pBmpBuf;
        
        pBmpBuf = (char *)ComFS_Loadfile("system\\vright.bmp");
        if(pBmpBuf == 0)
        	return -1;
        pButtonVirBuf[3] = pBmpBuf;
        
        pBmpBuf = (char *)ComFS_Loadfile("system\\vexit.bmp");
        if(pBmpBuf == 0)
        	return -1;
        pButtonVirBuf[4] = pBmpBuf;

        pBmpBuf = (char *)ComFS_Loadfile("system\\vin.bmp");
        if(pBmpBuf == 0)
        	return -1;
        pButtonVirBuf[5] = pBmpBuf;

		pBmpBuf = (char *)ComFS_Loadfile("system\\vout.bmp");
        if(pBmpBuf == 0)
        	return -1;
        pButtonVirBuf[6] = pBmpBuf;

		return 1;
	
}

/******************************************************************
 * FUNCTION: Dict_FreeRes()
 *
 * PURPOSE:
 *
 * PARAMETERS
 * Return value:
*****************************************************************/
T_MODULE T_WORD VirDsp_FreeRes()
{
	T_BYTE i;
	
	for(i=0; i<7; i++)	
		free(pButtonVirBuf[i]);
}

⌨️ 快捷键说明

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