📄 airguard_c.cpp
字号:
switch (wMessage)
{
// case WM_CREATE:
// break;
case WM_LBUTTONDBLCLK:
if(g_mySysState.bIsAmplified_JIMU){
g_mySysState.bIsAmplified_JIMU = 0;
MoveWindow(hWnd, 0, 0, 320, 240, 1);
}
else{
g_mySysState.bIsAmplified_JIMU = 1;
MoveWindow(hWnd, 0, 0, 640, 480, 1);
}
break;
case WM_PAINT:
hDc = BeginPaint(hWnd, &ps);
EndPaint( hWnd, &ps);
break;
case WM_SETCURSOR:
hCursor = LoadCursor(NULL, MAKEINTRESOURCE(IDC_CROSS));
SetCursor(hCursor);
break;
case WM_RBUTTONDOWN:
xPos = LOWORD(lParam);
yPos = HIWORD(lParam);
hDc = GetDC(hWnd);
crPointColor = GetPixel(hDc, xPos, yPos);
ReleaseDC(hWnd, hDc);
r = LOWORD(crPointColor) & 0x00ff;
g = (LOWORD(crPointColor) >> 8) & 0x00ff;
b = HIWORD(crPointColor) & 0x00ff;
wGrayValue = (r + g + b) / 3;
wGrayValue = 255 - wGrayValue;
fBlackness = (float)wGrayValue / 51;
fBlackness = fBlackness * g_myCamera.m_iIllumination/100;
sprintf(lpszMessage, "%3.1f", fBlackness);
SetWindowText(g_hwndEditBlackness, lpszMessage);
if (fBlackness >= g_myCamera.GetCriticalPoint()){
if(g_mySysState.bSoundAlarm)
MessageBeep(MB_ICONEXCLAMATION);
if (MessageBox(hWnd, "把该信息保存到数据库.\n 你确定吗?", "Message",
MB_ICONQUESTION | MB_YESNO) == IDYES){
rect.left = 0;
rect.top = 0;
rect.right = (g_mySysState.bIsAmplified_JIMU) ? 640 : 320;
rect.bottom = (g_mySysState.bIsAmplified_JIMU) ? 480 : 240;
hDc = GetDC(hWnd);
g_myDIB.SaveDIBintoDatebase(hDc, rect, fBlackness, g_myCamera.m_iCurrentChimney, g_myCamera.m_iCurrentCamera);
ReleaseDC(hWnd, hDc);
}
}
break;
case WM_DESTROY:
// PostQuitMessage(0);
break;
// default:
// return DefWindowProc(hWnd, wMessage, wParam, lParam);
}
return 0;
}
LRESULT CALLBACK Video_MPEGWndProc(HWND hWnd, UINT wMessage, WPARAM wParam, LPARAM lParam)
{
static HCURSOR hCursor;
WORD wTimerID;
POINT pt;
switch (wMessage)
{
case WM_INITDIALOG:
pt.x = 0;
pt.y = 0;
ClientToScreen(g_hwndVideo, &pt);
MoveWindow(hWnd, pt.x, pt.y, 640, 480, 1);
return TRUE;
case WM_PARENTMOVED:
pt.x = 0;
pt.y = 0;
ClientToScreen(g_hwndVideo, &pt);
MoveWindow(hWnd, pt.x, pt.y, 640, 480, 1);
MessageBox(NULL, "Window moved", "message", MB_OK);
break;
case WM_CONTEXTMENU:
if (g_mySysState.iOpMode == MANUALMODE){
MPEG_VideoWindow_OnContextMenu1(hWnd, wParam, lParam);
}
break;
case WM_TIMER:
wTimerID = wParam;
switch (wTimerID){
case TIMER_READYFORRECVVIDEO:
KillTimer(hWnd, TIMER_READYFORRECVVIDEO);
MessageBox(hWnd, "Timer received", "message", MB_OK);
g_myCamera.MPEG_StartRecvShow(g_hwndVideo_MPEG);
break;
}
break;
case WM_SNAP_OVER:
//MessageBox(hWnd, "snap over message received", "message", MB_OK);
switch (g_mySysState.iProcedureToBeContinued){
case DETECT_ON_TIMER_2:
MPEG_DetectChimneyOnTimer2();
break;
case VDO_ONCONTEXTMENU_2:
MPEG_VideoWindow_OnContextMenu2();
break;
case CREATE_CHIMNEY_TEMPLATE2:
MPEG_CreateChimneyTemplate2();
break;
}
break;
}
return 0;
}
// Mesage handler for Up Button Window.
LRESULT CALLBACK UpButtonWndProc(HWND hWnd, UINT wMessage, WPARAM wParam, LPARAM lParam)
{
static HRGN hWndRgn, hDrawRgn;
static WORD wButtonState = 0;// 0->not in region; 1->On top; 2->Push down
static CMyBitmap bmpUpArrowNotOn, bmpUpArrowOn, bmpUpArrowDown;
POINT pts[4];
PAINTSTRUCT ps;
HDC hDc;
POINT pt;
LPARAM lMyParam;
WPARAM wMyParam;
switch( wMessage)
{
case WM_CREATE:
pts[0].x = 12;
pts[0].y = 0;
pts[1].x = 24;
pts[1].y = 29;
pts[2].x = 12;
pts[2].y = 24;
pts[3].x = 0;
pts[3].y = 29;
hDrawRgn = CreatePolygonRgn( pts, 4, ALTERNATE);
hWndRgn = CreatePolygonRgn( pts, 4, ALTERNATE);
SetWindowRgn( hWnd, hWndRgn, true);
hDc = GetDC(hWnd);
bmpUpArrowNotOn.Init(g_hInst, hDc, IDB_BITMAP1);
bmpUpArrowOn.Init(g_hInst, hDc, IDB_BITMAP2);
bmpUpArrowDown.Init(g_hInst, hDc,IDB_BITMAP3);
ReleaseDC(hWnd, hDc);
break;
case WM_PAINT:
hDc = BeginPaint( hWnd, &ps);
if ( wButtonState == 0)
bmpUpArrowNotOn.Show(hDc, 0, 0);
else if( wButtonState == 1)
bmpUpArrowOn.Show(hDc, 0, 0);
else bmpUpArrowDown.Show(hDc, 0, 0);
EndPaint( hWnd, &ps);
return 0L;
case WM_LBUTTONDOWN:
wButtonState = 2;
InvalidateRgn( hWnd, hDrawRgn, true);
UpdateWindow( hWnd);
wMyParam = MAKEWPARAM(ID_UPBUTTON, (WORD)ACK_BN_DOWN);
lMyParam = (LPARAM)hWnd;
SendMessage(GetParent(hWnd), WM_ACK, wMyParam, lMyParam);
break;
case WM_LBUTTONUP:
wButtonState = 1;
InvalidateRgn( hWnd, hDrawRgn, true);
UpdateWindow( hWnd);
wMyParam = MAKEWPARAM(ID_UPBUTTON, (WORD)ACK_BN_UP);
lMyParam = (LPARAM)hWnd;
SendMessage(GetParent(hWnd), WM_ACK, wMyParam, lMyParam);
break;
case WM_MOUSEMOVE:
if ( wButtonState == 0){
wButtonState = 1;
SetTimer( hWnd, 1, 100, NULL);
InvalidateRgn( hWnd, hDrawRgn, true);
UpdateWindow( hWnd);
}
break;
case WM_TIMER:
GetCursorPos( &pt);
ScreenToClient( hWnd, &pt);
if( !PtInRegion( hDrawRgn, pt.x, pt.y)){
wButtonState = 0;
InvalidateRgn( hWnd, hDrawRgn, true);
UpdateWindow(hWnd);
KillTimer( hWnd, 1);
}
break;
case WM_DESTROY:
DeleteObject( hDrawRgn);
DeleteObject( hWndRgn);
break;
}
return DefWindowProc( hWnd, wMessage, wParam, lParam);
}
// Mesage handler for Left Button Window.
LRESULT CALLBACK LeftButtonWndProc(HWND hWnd, UINT wMessage, WPARAM wParam, LPARAM lParam)
{
static HRGN hWndRgn, hDrawRgn;
static WORD wButtonState = 0;// 0->not in region; 1->On top; 2->Push down
static CMyBitmap bmpArrowNotOn, bmpArrowOn, bmpArrowDown;
POINT pts[4];
PAINTSTRUCT ps;
HDC hDc;
POINT pt;
LPARAM lMyParam;
WPARAM wMyParam;
switch( wMessage)
{
case WM_CREATE:
pts[0].x = 29;
pts[0].y = 0;
pts[1].x = 25;
pts[1].y = 12;
pts[2].x = 29;
pts[2].y = 24;
pts[3].x = 0;
pts[3].y = 12;
hDrawRgn = CreatePolygonRgn( pts, 4, ALTERNATE);
hWndRgn = CreatePolygonRgn( pts, 4, ALTERNATE);
SetWindowRgn( hWnd, hWndRgn, true);
hDc = GetDC(hWnd);
bmpArrowNotOn.Init(g_hInst, hDc, IDB_BITMAP4);
bmpArrowOn.Init(g_hInst, hDc, IDB_BITMAP5);
bmpArrowDown.Init(g_hInst, hDc,IDB_BITMAP6);
ReleaseDC(hWnd, hDc);
break;
case WM_PAINT:
hDc = BeginPaint( hWnd, &ps);
if ( wButtonState == 0)
bmpArrowNotOn.Show(hDc, 0, 0);
else if( wButtonState == 1)
bmpArrowOn.Show(hDc, 0, 0);
else bmpArrowDown.Show(hDc, 0, 0);
EndPaint( hWnd, &ps);
return 0L;
case WM_LBUTTONDOWN:
wButtonState = 2;
InvalidateRgn( hWnd, hDrawRgn, true);
UpdateWindow( hWnd);
wMyParam = MAKEWPARAM(ID_LEFTBUTTON, (WORD)ACK_BN_DOWN);
lMyParam = (LPARAM)hWnd;
SendMessage(GetParent(hWnd), WM_ACK, wMyParam, lMyParam);
break;
case WM_LBUTTONUP:
wButtonState = 1;
InvalidateRgn( hWnd, hDrawRgn, true);
UpdateWindow( hWnd);
wMyParam = MAKEWPARAM(ID_LEFTBUTTON, (WORD)ACK_BN_UP);
lMyParam = (LPARAM)hWnd;
SendMessage(GetParent(hWnd), WM_ACK, wMyParam, lMyParam);
break;
case WM_MOUSEMOVE:
if ( wButtonState == 0){
wButtonState = 1;
SetTimer( hWnd, 1, 100, NULL);
InvalidateRgn( hWnd, hDrawRgn, true);
UpdateWindow( hWnd);
}
break;
case WM_TIMER:
GetCursorPos( &pt);
ScreenToClient( hWnd, &pt);
if( !PtInRegion( hDrawRgn, pt.x, pt.y)){
wButtonState = 0;
InvalidateRgn( hWnd, hDrawRgn, true);
UpdateWindow(hWnd);
KillTimer( hWnd, 1);
}
break;
case WM_DESTROY:
DeleteObject( hDrawRgn);
DeleteObject( hWndRgn);
break;
}
return DefWindowProc( hWnd, wMessage, wParam, lParam);
}
// Mesage handler for Down Button Window.
LRESULT CALLBACK DownButtonWndProc(HWND hWnd, UINT wMessage, WPARAM wParam, LPARAM lParam)
{
static HRGN hWndRgn, hDrawRgn;
static WORD wButtonState = 0;// 0->not in region; 1->On top; 2->Push down
static CMyBitmap bmpArrowNotOn, bmpArrowOn, bmpArrowDown;
POINT pts[4];
PAINTSTRUCT ps;
HDC hDc;
POINT pt;
LPARAM lMyParam;
WPARAM wMyParam;
switch( wMessage)
{
case WM_CREATE:
pts[0].x = 0;
pts[0].y = 0;
pts[1].x = 12;
pts[1].y = 5;
pts[2].x = 24;
pts[2].y = 0;
pts[3].x = 12;
pts[3].y = 29;
hDrawRgn = CreatePolygonRgn( pts, 4, ALTERNATE);
hWndRgn = CreatePolygonRgn( pts, 4, ALTERNATE);
SetWindowRgn( hWnd, hWndRgn, true);
hDc = GetDC(hWnd);
bmpArrowNotOn.Init(g_hInst, hDc, IDB_BITMAP7);
bmpArrowOn.Init(g_hInst, hDc, IDB_BITMAP8);
bmpArrowDown.Init(g_hInst, hDc,IDB_BITMAP9);
ReleaseDC(hWnd, hDc);
break;
case WM_PAINT:
hDc = BeginPaint( hWnd, &ps);
if ( wButtonState == 0)
bmpArrowNotOn.Show(hDc, 0, 0);
else if( wButtonState == 1)
bmpArrowOn.Show(hDc, 0, 0);
else bmpArrowDown.Show(hDc, 0, 0);
EndPaint( hWnd, &ps);
return 0L;
case WM_LBUTTONDOWN:
wButtonState = 2;
InvalidateRgn( hWnd, hDrawRgn, true);
UpdateWindow( hWnd);
wMyParam = MAKEWPARAM(ID_DOWNBUTTON, (WORD)ACK_BN_DOWN);
lMyParam = (LPARAM)hWnd;
SendMessage(GetParent(hWnd), WM_ACK, wMyParam, lMyParam);
break;
case WM_LBUTTONUP:
wButtonState = 1;
InvalidateRgn( hWnd, hDrawRgn, true);
UpdateWindow( hWnd);
wMyParam = MAKEWPARAM(ID_DOWNBUTTON, (WORD)ACK_BN_UP);
lMyParam = (LPARAM)hWnd;
SendMessage(GetParent(hWnd), WM_ACK, wMyParam, lMyParam);
break;
case WM_MOUSEMOVE:
if ( wButtonState == 0){
wButtonState = 1;
SetTimer( hWnd, 1, 100, NULL);
InvalidateRgn( hWnd, hDrawRgn, true);
UpdateWindow( hWnd);
}
break;
case WM_TIMER:
GetCursorPos( &pt);
ScreenToClient( hWnd, &pt);
if( !PtInRegion( hDrawRgn, pt.x, pt.y)){
wButtonState = 0;
InvalidateRgn( hWnd, hDrawRgn, true);
UpdateWindow(hWnd);
KillTimer( hWnd, 1);
}
break;
case WM_DESTROY:
DeleteObject( hDrawRgn);
DeleteObject( hWndRgn);
break;
}
return DefWindowProc( hWnd, wMessage, wParam, lParam);
}
// Mesage handler for Right Button Window.
LRESULT CALLBACK RightButtonWndProc(HWND hWnd, UINT wMessage, WPARAM wParam, LPARAM lParam)
{
static HRGN hWndRgn, hDrawRgn;
static WORD wButtonState = 0;// 0->not in region; 1->On top; 2->Push down
static CMyBitmap bmpArrowNotOn, bmpArrowOn, bmpArrowDown;
POINT pts[4];
PAINTSTRUCT ps;
HDC hDc;
POINT pt;
LPARAM lMyParam;
WPARAM wMyParam;
switch( wMessage)
{
case WM_CREATE:
pts[0].x = 0;
pts[0].y = 0;
pts[1].x = 29;
pts[1].y = 12;
pts[2].x = 0;
pts[2].y = 24;
pts[3].x = 5;
pts[3].y = 12;
hDrawRgn = CreatePolygonRgn( pts, 4, ALTERNATE);
hWndRgn = CreatePolygonRgn( pts, 4, ALTERNATE);
SetWindowRgn( hWnd, hWndRgn, true);
hDc = GetDC(hWnd);
bmpArrowNotOn.Init(g_hInst, hDc, IDB_BITMAP10);
bmpArrowOn.Init(g_hInst, hDc, IDB_BITMAP11);
bmpArrowDown.Init(g_hInst, hDc,IDB_BITMAP12);
ReleaseDC(hWnd, hDc);
break;
case WM_PAINT:
hDc = BeginPaint( hWnd, &ps);
if ( wButtonState == 0)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -