📄 appcamera.c
字号:
/****************************************************************************
// appCamera.c
//appCamera
// Create by jsguo 2005.9.30
****************************************************************************/
#include "../inc/nucleus.h"
#include "../inc/winconfig.h"
#include "MMI.h"
#include "../inc/windows.h"
#include "../inc/High_Api.h"
#include "..\..\vc0528rdk\vim_high_api.h"
#include "../inc/nucleus.h"
#include "../inc/nu_sd.h"
#include "demoTest.h"
extern NU_SERIAL_PORT port;
int g_exitInitSign_camera;
char g_szInfoLeft[30];
char g_szInfoRight[30];
char g_szButtonLeft[30];
char g_szButtonRight[30];
const char g_resolutionIndex[2][100]=
{"Sensor Output 1280x1024 ","Sensor Output 640x480 "};
extern SETTING_ITEM MMI_VideoSetting[];
extern char Cam_Resolution[][10];
extern UINT8 g_outindex;
extern UINT8 g_withframe;
LRESULT CALLBACK cameraproc(HWND hwnd, UINT iMsg, WPARAM wParam, LPARAM lParam);
InitMWindow initMyCamera;
CloseMWindow closeMyCamera;
ExitInitMWindow exitInitMyCamera;
int SetCameraStart(InitMWindow init,ExitInitMWindow exitInit,CloseMWindow close)
{
memcpy(g_szInfoLeft,"←OUT INDEX→",sizeof("←OUT INDEX→"));
memcpy(g_szInfoRight,"↑ ZOOM ↓",sizeof("↑ ZOOM ↓"));
memcpy(g_szButtonLeft,"CAPTURE",sizeof("CAPTURE"));
memcpy(g_szButtonRight,"CANCEL",sizeof("CANCEL"));
initMyCamera=init;
initMyCamera();
exitInitMyCamera=exitInit;
closeMyCamera=close;
return 1;
}
int MMI_SetCameraInfo(char* szInfoLeft,char* szInfoRight,char* szButtonLeft,char* szButtonRight)
{
if(szInfoLeft!=NULL)
{
memset(g_szInfoLeft,0,sizeof(g_szInfoLeft));
strcpy(g_szInfoLeft,szInfoLeft);
}
if(szInfoRight!=NULL)
{
memset(g_szInfoRight,0,sizeof(g_szInfoRight));
strcpy(g_szInfoRight,szInfoRight);
}
if(szButtonLeft!=NULL)
{
memset(g_szButtonLeft,0,sizeof(g_szButtonLeft));
strcpy(g_szButtonLeft,szButtonLeft);
}
if(szButtonRight!=NULL)
{
memset(g_szButtonRight,0,sizeof(g_szButtonRight));
strcpy(g_szButtonRight,szButtonRight);//sizeof(szButtonRight));
}
return 1;
}
int WINAPI MCameraMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
PSTR szCmdLine, int iCmdShow)
{
static CHAR szAppName[]="cameraForm";
HWND hwnd;
MSG msg;
WNDCLASS wndclass;
wndclass.style = CS_DBLCLKS | CS_HREDRAW | CS_VREDRAW;
wndclass.lpfnWndProc = (WNDPROC)cameraproc;
wndclass.cbClsExtra =0;
wndclass.cbWndExtra =0;
wndclass.hInstance =0;
wndclass.hIcon =0;
wndclass.hCursor =0;
wndclass.hbrBackground =(HBRUSH)GetStockObject(WHITE_BRUSH);
wndclass.lpszMenuName =NULL;
wndclass.lpszClassName = szAppName;
RegisterClass(&wndclass);
hwnd=CreateWindowEx(0L,
szAppName,
"camera",
WS_POPUP | WS_VISIBLE,//WS_OVERLAPPEDWINDOW
CW_USEDEFAULT,
CW_USEDEFAULT,
MAINFRAME_WIDTH_DEFAULT,
MAINFRAME_HEIGHT_DEFAULT,
NULL,
NULL,
NULL,
NULL);
g_exitInitSign_camera =1;
ShowWindow(hwnd,iCmdShow);
UpdateWindow(hwnd);
while (GetMessage(&msg,NULL,0,0)) {
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
}
// 消息循环函数
LRESULT CALLBACK cameraproc(HWND hwnd, UINT iMsg, WPARAM wParam, LPARAM lParam)
{
HDC hdc;
PAINTSTRUCT ps;
RECT rectDisplay,rectControl,rectButton,rectInfo;
int keyvalue;
HBRUSH hBrush;
HBRUSH hSelectBrush;
HBRUSH hControlBrush,hControlBrush1;
char strtmpResolution[30];
switch (iMsg)
{
case WM_PAINT:
hBrush = CreateSolidBrush(0xd4deee);
hControlBrush = CreateSolidBrush(COLOR_SELECT);
hControlBrush1=CreateSolidBrush(0xffffff); //angela
hSelectBrush = CreateSolidBrush(0xffff00);
hdc=BeginPaint(hwnd,&ps);
//draw 240*270
rectDisplay.top = 4;
rectDisplay.left = 4;
rectDisplay.right = MAINFRAME_WIDTH_DEFAULT-3;
rectDisplay.bottom = MAINFRAME_WIDTH_DEFAULT+30;
FillRect(hdc,&rectDisplay,hSelectBrush);
//draw 240*(270->320)
rectControl.top = MAINFRAME_WIDTH_DEFAULT+30;
rectControl.left = 0;
rectControl.right = MAINFRAME_WIDTH_DEFAULT;
rectControl.bottom = MAINFRAME_HEIGHT_DEFAULT;
FillRect(hdc,&rectControl,hBrush);
//Draw top information angela added output information
rectInfo.left = 4;
rectInfo.right = MAINFRAME_WIDTH_DEFAULT-4;
rectInfo.top = 4;
rectInfo.bottom =16+4;
FillRect(hdc,&rectInfo,hControlBrush1);
DrawText(hdc,g_resolutionIndex[g_outindex],-1,&rectInfo,
DT_SINGLELINE|DT_CENTER|DT_VCENTER);
//Draw top information angela added capture information
rectInfo.left = 4;
rectInfo.right = MAINFRAME_WIDTH_DEFAULT-4;
rectInfo.top = 4+14;
rectInfo.bottom =40;
memset(strtmpResolution,0,30);
strcat(strtmpResolution,MMI_VideoSetting[0].ItemName);
strcat(strtmpResolution,Cam_Resolution[MMI_VideoSetting[0].Value]);
FillRect(hdc,&rectInfo,hControlBrush1);
DrawText(hdc,strtmpResolution,-1,&rectInfo,DT_SINGLELINE|DT_CENTER|DT_VCENTER);
//Draw information bar
rectInfo.left = 4;
rectInfo.right = MAINFRAME_WIDTH_DEFAULT-4;
rectInfo.top = MAINFRAME_WIDTH_DEFAULT+30+4;
rectInfo.bottom =MAINFRAME_HEIGHT_DEFAULT-30;
rectInfo.right = MAINFRAME_WIDTH_DEFAULT/2-1;
FillRect(hdc,&rectInfo,hControlBrush);
DrawText(hdc,g_szInfoLeft,-1,&rectInfo,
DT_SINGLELINE|DT_CENTER|DT_VCENTER);
rectInfo.left = MAINFRAME_WIDTH_DEFAULT/2+1;
rectInfo.right = MAINFRAME_WIDTH_DEFAULT-4;
FillRect(hdc,&rectInfo,hControlBrush);
DrawText(hdc,g_szInfoRight,-1,&rectInfo,
DT_SINGLELINE|DT_CENTER|DT_VCENTER);
// Draw Button and Text
rectButton.left = 0;
rectButton.right = MAINFRAME_WIDTH_DEFAULT-0;
rectButton.top = MAINFRAME_HEIGHT_DEFAULT-30+2;
rectButton.bottom = MAINFRAME_HEIGHT_DEFAULT;
rectButton.right = MAINFRAME_WIDTH_DEFAULT/2-1;
FillRect(hdc,&rectButton,hControlBrush);
DrawText(hdc,g_szButtonLeft,-1,&rectButton,
DT_SINGLELINE|DT_CENTER|DT_VCENTER);
rectButton.left = MAINFRAME_WIDTH_DEFAULT/2+1;
rectButton.right = MAINFRAME_WIDTH_DEFAULT-0;
FillRect(hdc,&rectButton,hControlBrush);
DrawText(hdc,g_szButtonRight,-1,&rectButton,
DT_SINGLELINE|DT_CENTER|DT_VCENTER);
DeleteObject(hControlBrush);
DeleteObject(hSelectBrush);
DeleteObject(hBrush);
EndPaint(hwnd,&ps);
if(g_exitInitSign_camera)
{
exitInitMyCamera();
g_exitInitSign_camera=0;
}
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
case WM_KEYUP:
keyvalue = wParam - 49;
if((keyvalue == KEY_CANCEL)&&(!g_withframe))
{
PostMessage(hwnd,WM_CLOSE,0,0);
if(closeMyCamera!=NULL)
closeMyCamera();
return 1;
}
switch(keyvalue)
{
case KEY_UP:
User_CameraUp();
break;
case KEY_DOWN:
User_CameraDown();
break;
case KEY_LEFT:
//User_CameraLeft();
break;
case KEY_RIGHT:
//User_CameraRight();
break;
case KEY_MIDDLE:
User_CameraMiddle();
break;
case KEY_OK:
User_CameraOK();
break;
case KEY_CANCEL:
USER_closeSavePicture();
//User_InitCamera(); //preview with frame then to preview normal
break;
default:
User_KeyValueEvent(keyvalue);
break;
}
PostMessage(hwnd,WM_PAINT,0,0);
default:
return DefWindowProc(hwnd,iMsg,wParam,lParam);
}
return (0);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -