📄 mainfrm.h
字号:
//-----------------------------------------------------------------------------
// (c) 2002 by Basler Vision Technologies
// Section: Vision Components
// Project: BCAM
// $Header: mainfrm.h, 20, 11.06.2004 09:56:50, Happe, A.$
//-----------------------------------------------------------------------------
/**
\file mainfrm.h
*
* \brief Interface of the CMainFrame class
*
*/
//-----------------------------------------------------------------------------
#if !defined(AFX_MAINFRM_H__8C4B8ACF_7C21_11D5_920C_0090278E5E96__INCLUDED_)
#define AFX_MAINFRM_H__8C4B8ACF_7C21_11D5_920C_0090278E5E96__INCLUDED_
#if _MSC_VER >= 1000
#pragma once
#endif // _MSC_VER >= 1000
// BcamViewer's registry root key
#define APPLICATION_KEY _T("Software\\Basler\\BcamViewer\\")
// Name of the windows message used to broadcast the current frame rate
#define BROADCAST_FPS_MSG "BcamViewerFpsMsg"
// Registry key which controlls whether the viewer broadcasts the current frame rate
#define ENABLE_BROADCAST_KEY "EnableFpsBroadcast"
#define RESTORE_SWITCH "/restore"
#define RESTORE_LAYOUT_ARG "layout"
#define RESTORE_SETTINGS_ARG "camera"
#define RESTORE_ALL_ARG "all"
#define RESTORE_NONE_ARG "none"
#define HELP_FILE "..\\doc\\Bcam_Camera_Viewer_Help.chm"
#define WM_UPDATEUI WM_USER+100 // message used to trigger idle handling
#include "Image.h"
#include "Camera.h"
#include "CameraFeatureView.h"
#include "CameraManager.h"
#include "BusView.h"
#include "ErrorBox.h"
#include "PropertyDlg.h"
//------------------------------------------------------------------------------
// class CMainFrame
// Author:
// Date: 20.09.2002
//------------------------------------------------------------------------------
/**
* \brief The BcamViewer's main frame
*
*/
//------------------------------------------------------------------------------
class CMainFrame : public CMDIFrameWindowImpl<CMainFrame>, public CUpdateUI<CMainFrame>,
public CMessageFilter, public CIdleHandler
{
public:
DECLARE_FRAME_WND_CLASS("BcamViewer", IDR_MAINFRAME)
CMainFrame(bool m_fRestoreSettings, bool m_fRestoreWindowLayout);
~CMainFrame();
virtual BOOL PreTranslateMessage(MSG* pMsg)
{
if( m_BusView.PreTranslateMessage(pMsg) ) return TRUE;
if(CMDIFrameWindowImpl<CMainFrame>::PreTranslateMessage(pMsg))
return TRUE;
HWND hWnd = MDIGetActive();
if(hWnd != NULL)
return (BOOL)::SendMessage(hWnd, WM_FORWARDMSG, 0, (LPARAM)pMsg);
return FALSE;
}
inline virtual BOOL OnIdle();
BEGIN_MSG_MAP(CMainFrame)
MESSAGE_HANDLER(WM_CREATE, OnCreate)
MESSAGE_HANDLER(WM_TIMER, OnTimer)
MESSAGE_HANDLER(WM_SETCURSOR, OnSetCursor)
MESSAGE_HANDLER(WM_UPDATEUI, OnUpdateUI)
MESSAGE_HANDLER(WM_CLOSE, OnClose)
MESSAGE_HANDLER(WM_DESTROY, OnDestroy)
MESSAGE_HANDLER(WM_ERROR, OnError) // error when continuously grabbing images
MESSAGE_HANDLER(WM_HELP, OnHelp)
COMMAND_ID_HANDLER(ID_APP_EXIT, OnFileExit)
COMMAND_ID_HANDLER(ID_FILE_NEW, OnFileNew)
COMMAND_ID_HANDLER(ID_EDIT_COPY, OnEditCopy)
COMMAND_ID_HANDLER(ID_FILE_OPEN, OnFileOpen)
COMMAND_ID_HANDLER(ID_FILE_SAVE, OnFileSave)
COMMAND_ID_HANDLER(ID_FILE_SAVE_CONFIGURATION, OnFileSaveConfiguration)
COMMAND_ID_HANDLER(ID_FILE_RESTORE_CONFIGURATION, OnFileRestoreConfiguration)
COMMAND_ID_HANDLER(ID_VIEW_TOOLBAR, OnViewToolBar)
COMMAND_ID_HANDLER(ID_VIEW_STATUS_BAR, OnViewStatusBar)
COMMAND_ID_HANDLER(ID_VIEW_BUSVIEW, OnViewBusView)
COMMAND_ID_HANDLER(ID_VIEW_PROPERTIES, OnViewProperties)
COMMAND_RANGE_HANDLER(ID_VIEW_FIRST_FEATURE, ID_VIEW_LAST_FEATURE , OnViewFeature);
COMMAND_RANGE_HANDLER(ID_VIEW_ZOOM_50, ID_VIEW_ZOOM_USER, OnViewZoom);
COMMAND_RANGE_HANDLER(ID_VIEW_NO_CONVERSION, ID_VIEW_CONVERSION_RG, OnViewConversion);
COMMAND_ID_HANDLER(ID_VIEW_ZOOM_BEST, OnViewZoomBest)
COMMAND_ID_HANDLER(ID_APP_ABOUT, OnAppAbout)
COMMAND_ID_HANDLER(ID_HELP, OnHelpCmd)
COMMAND_ID_HANDLER(ID_WINDOW_CASCADE, OnWindowCascade)
COMMAND_ID_HANDLER(ID_WINDOW_TILE_HORZ, OnWindowTile)
COMMAND_ID_HANDLER(ID_WINDOW_ARRANGE, OnWindowArrangeIcons)
COMMAND_ID_HANDLER(ID_GRAB_SINGLE, OnGrabSingle)
COMMAND_ID_HANDLER(ID_GRAB_CONTINUOUS, OnGrabContinuous)
COMMAND_ID_HANDLER(ID_WHITE_BALANCE, OnWhiteBalance)
COMMAND_ID_HANDLER(ID_GRAB_CANCEL, OnGrabCancel)
COMMAND_ID_HANDLER(ID_CAMERA_MAXIMIZE, OnCameraMaximize)
COMMAND_ID_HANDLER(ID_TOOLS_CALCULATE_CORRECTION_TABLE, OnCalculateCorrectionTable)
CHAIN_MSG_MAP(CUpdateUI<CMainFrame>)
CHAIN_MSG_MAP(CMDIFrameWindowImpl<CMainFrame>)
CHAIN_DOCK_CHILD_COMMANDS(m_BusView)
END_MSG_MAP()
BEGIN_UPDATE_UI_MAP(CMainFrame)
UPDATE_ELEMENT(ID_FILE_NEW, UPDUI_MENUPOPUP | UPDUI_TOOLBAR)
UPDATE_ELEMENT(ID_FILE_OPEN, UPDUI_MENUPOPUP | UPDUI_TOOLBAR)
UPDATE_ELEMENT(ID_FILE_SAVE, UPDUI_MENUPOPUP | UPDUI_TOOLBAR)
UPDATE_ELEMENT(ID_FILE_SAVE_CONFIGURATION, UPDUI_MENUPOPUP)
UPDATE_ELEMENT(ID_FILE_RESTORE_CONFIGURATION, UPDUI_MENUPOPUP)
UPDATE_ELEMENT(ID_EDIT_COPY, UPDUI_MENUPOPUP | UPDUI_TOOLBAR)
UPDATE_ELEMENT(ID_GRAB_CONTINUOUS, UPDUI_MENUPOPUP | UPDUI_TOOLBAR)
UPDATE_ELEMENT(ID_GRAB_SINGLE, UPDUI_MENUPOPUP | UPDUI_TOOLBAR)
UPDATE_ELEMENT(ID_GRAB_CANCEL, UPDUI_MENUPOPUP | UPDUI_TOOLBAR)
UPDATE_ELEMENT(ID_CAMERA_MAXIMIZE, UPDUI_MENUPOPUP | UPDUI_TOOLBAR)
UPDATE_ELEMENT(ID_VIEW_TOOLBAR, UPDUI_MENUPOPUP)
UPDATE_ELEMENT(ID_VIEW_STATUS_BAR,UPDUI_MENUPOPUP)
UPDATE_ELEMENT(ID_VIEW_BUSVIEW,UPDUI_MENUPOPUP)
UPDATE_ELEMENT(ID_VIEW_BRIGHTNESS, UPDUI_MENUPOPUP)
UPDATE_ELEMENT(ID_VIEW_HUE, UPDUI_MENUPOPUP)
UPDATE_ELEMENT(ID_VIEW_SATURATION, UPDUI_MENUPOPUP)
UPDATE_ELEMENT(ID_VIEW_GAMMA, UPDUI_MENUPOPUP)
UPDATE_ELEMENT(ID_VIEW_SHUTTER, UPDUI_MENUPOPUP)
UPDATE_ELEMENT(ID_VIEW_GAIN, UPDUI_MENUPOPUP)
UPDATE_ELEMENT(ID_VIEW_WHITEBALANCE, UPDUI_MENUPOPUP)
UPDATE_ELEMENT(ID_VIEW_BANDWIDTH, UPDUI_MENUPOPUP)
UPDATE_ELEMENT(ID_VIEW_ZOOM_25, UPDUI_MENUPOPUP)
UPDATE_ELEMENT(ID_VIEW_ZOOM_50, UPDUI_MENUPOPUP)
UPDATE_ELEMENT(ID_VIEW_ZOOM_100, UPDUI_MENUPOPUP)
UPDATE_ELEMENT(ID_VIEW_ZOOM_200, UPDUI_MENUPOPUP)
UPDATE_ELEMENT(ID_VIEW_ZOOM_400, UPDUI_MENUPOPUP)
UPDATE_ELEMENT(ID_VIEW_ZOOM_USER, UPDUI_MENUPOPUP)
UPDATE_ELEMENT(ID_VIEW_ZOOM_BEST, UPDUI_MENUPOPUP | UPDUI_TOOLBAR )
UPDATE_ELEMENT(ID_WHITE_BALANCE, UPDUI_MENUPOPUP | UPDUI_TOOLBAR )
UPDATE_ELEMENT(ID_VIEW_NO_CONVERSION, UPDUI_MENUPOPUP)
UPDATE_ELEMENT(ID_VIEW_CONVERSION_GB, UPDUI_MENUPOPUP)
UPDATE_ELEMENT(ID_VIEW_CONVERSION_GR, UPDUI_MENUPOPUP)
UPDATE_ELEMENT(ID_VIEW_CONVERSION_BG, UPDUI_MENUPOPUP)
UPDATE_ELEMENT(ID_VIEW_CONVERSION_RG, UPDUI_MENUPOPUP)
UPDATE_ELEMENT(ID_VIEW_PROPERTIES, UPDUI_MENUPOPUP | UPDUI_TOOLBAR )
UPDATE_ELEMENT(ID_TOOLS_CALCULATE_CORRECTION_TABLE, UPDUI_MENUPOPUP)
END_UPDATE_UI_MAP()
// Message handlers
LRESULT OnCreate(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/);
LRESULT OnFileExit(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/);
LRESULT OnFileOpen(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/);
LRESULT OnFileSave(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/);
LRESULT OnFileSaveConfiguration(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/);
LRESULT OnFileRestoreConfiguration(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/);
LRESULT OnClose(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
LRESULT OnDestroy(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
LRESULT OnError(UINT /*uMsg*/, WPARAM wParam, LPARAM lParam, BOOL& /*bHandled*/);
LRESULT OnHelp(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/);
LRESULT OnFileNew(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/);
LRESULT OnEditCopy(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/);
LRESULT OnViewToolBar(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/);
LRESULT OnViewStatusBar(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/);
LRESULT OnViewBusView(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/);
LRESULT OnViewProperties(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/);
LRESULT OnViewFeature(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/);
LRESULT OnViewZoom(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/);
LRESULT OnViewZoomBest(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/);
LRESULT OnViewConversion(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/);
LRESULT OnAppAbout(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/);
LRESULT OnHelpCmd(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/);
LRESULT OnWindowCascade(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/);
LRESULT OnWindowTile(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/);
LRESULT OnWindowArrangeIcons(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/);
LRESULT OnGrabSingle(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/);
LRESULT OnGrabContinuous(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/);
LRESULT OnWhiteBalance(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/);
LRESULT OnGrabCancel(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/);
LRESULT OnCameraMaximize(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/);
LRESULT OnCalculateCorrectionTable(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/);
LRESULT OnTimer(UINT, WPARAM, LPARAM, BOOL&);
LRESULT OnSetCursor(UINT, WPARAM, LPARAM, BOOL&);
LRESULT OnUpdateUI(UINT, WPARAM, LPARAM, BOOL&) { return 0;/* do nothing here, idle handler will update UI */ }
/// Report error
void ReportError(BcamException& e);
/// Calback (change of the current device)
void CurrentDeviceChanged(CCamera* pCamera);
/// Callback (current device has been reconfigured)
void ConfigurationChanged(CCamera* pCamera, DCSVideoFormat format, DCSVideoMode mode, DCSVideoFrameRate rate, DCSColorCode code);
/// Callback (one device has been removed)
void DeviceRemoved(CString DevName);
void UpdateUI();
BOOL KillTimer(UINT nIDEvent)
{
ATLASSERT(::IsWindow(m_hWnd));
if ( m_fBroadCastFps )
::PostMessage(HWND_BROADCAST, m_uFpsBroadCastMessage, 0, 0);
return ::KillTimer(m_hWnd, nIDEvent);
}
private:
// Member variables
CMDICommandBarCtrl m_CmdBar;
void AddScalarFeature(BcamFeatureID, BOOL newLine = FALSE, BOOL show = TRUE);
void AddWhiteBalanceFeature(BOOL newLine = FALSE, BOOL show = TRUE);
void AddBandwidthFeature(BOOL newLine = FALSE, BOOL show = TRUE);
void ShowFeatureWindow(BcamFeatureID id, BOOL show = TRUE);
void ShowHelp();
/// Refresh the controls for a given camera object
void RefreshFeatureViews(CCamera* pCamera);
/// Update cached information for the current device
void UpdateCache();
// map a feature ID to the corresponding view
typedef map<BcamFeatureID, CCameraFeatureViewBase*> FeatureMap_t;
FeatureMap_t m_Features;
CCameraManager m_CameraManager;
CPropertyDlg* m_pPropertyDlg;
CErrorBox m_ErrorBox;
// GUI elements
CMultiPaneStatusBarCtrl m_Sbar;
CFlatDockingWindow m_Dock;
CBusView m_BusView;
bool m_fPropertyPageVisible;
bool m_fCurrentDeviceSupportsShading;
bool m_fCurrentDeviceSupportsOneShot;
bool m_fWhiteBalanceSupported;
bool m_fMono8;
bool m_fBayerColorFilter;
bool m_fYuv422;
bool m_fRestoreCameraSettings;
bool m_fRestoreWindowLayout;
UINT m_uFpsBroadCastMessage; // message ID for fps broadcasts
bool m_fBroadCastFps; // if true, the fps value will be broadcasted
friend class CCamera; // Camera object needs access to the white balance sliders
friend class CCamera::CDisplayThread; // needs access to the white balance sliders
friend class CBusView; // Busview needs access to our command bar to display context menus
friend class CImageView;// Needs access to command and status bar
friend class CCameraManager; // Camera manager needs access to the main frame's status bar
};
/////////////////////////////////////////////////////////////////////////////
//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
#endif // !defined(AFX_MAINFRM_H__8C4B8ACF_7C21_11D5_920C_0090278E5E96__INCLUDED_)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -