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

📄 mainfrm.h

📁 BCAM 1394 Driver
💻 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 + -