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

📄 mainwnd.h

📁 The source code samples for chapter 2, 4, 6, and 8 are contained in the EvenChapters project. Those
💻 H
字号:
// MainWnd.h: Defines main window for application

#pragma once
#ifndef MAINWND_H
#define MAINWND_H

#include "axwin2.h"
#include "resource.h"
#import "..\..\BULLSEYECTL\BullsEyeCtl.tlb" raw_interfaces_only raw_native_types no_namespace named_guids

typedef CWinTraitsOR<0, WS_EX_CLIENTEDGE, CFrameWinTraits>
        CMainWindowTraits;

#define ID_CHILD_CONTROL 1

class CMainWindow :
  public CWindowImpl<CMainWindow, CWindow, CMainWindowTraits>,
  public IPropertyNotifySink,
  public IDispEventImpl<ID_CHILD_CONTROL,
                        CMainWindow,
                        &DIID__IBullsEyeEvents,
                        &LIBID_BullsEyeLib, 1, 0>
{
public:
  CMainWindow();

BEGIN_MSG_MAP(CMainWindow)
  MESSAGE_HANDLER(WM_CREATE, OnCreate)
  MESSAGE_HANDLER(WM_SIZE, OnSize)
  MESSAGE_HANDLER(WM_CLOSE, OnClose)
  COMMAND_ID_HANDLER(ID_FILE_NEW, OnFileNew)
  COMMAND_ID_HANDLER(ID_FILE_OPEN, OnFileOpen)
  COMMAND_ID_HANDLER(ID_FILE_SAVE, OnFileSave)
  COMMAND_ID_HANDLER(ID_FILE_SAVE_AS, OnFileSaveAs)
  COMMAND_ID_HANDLER(ID_FILE_EXIT, OnFileExit)
  COMMAND_ID_HANDLER(ID_EDIT_INSERTCONTROL, OnEditInsertControl)
  COMMAND_ID_HANDLER(ID_EDIT_PROPERTIES, OnEditProperties)
  COMMAND_ID_HANDLER(ID_EDIT_SHOWBULLSEYE, OnEditShowBullsEye)
  COMMAND_ID_HANDLER(ID_EDIT_SHOW_DARTBOARD, OnEditShowDartBoard)
  COMMAND_ID_HANDLER(ID_HELP_ABOUT, OnHelpAbout)
END_MSG_MAP()

BEGIN_SINK_MAP(CMainWindow)
  SINK_ENTRY_EX(ID_CHILD_CONTROL, DIID__IBullsEyeEvents, 1, OnRingHit)
END_SINK_MAP()

  // Required to forward messages to the control
  BOOL PreTranslateAccelerator(MSG* pMsg);

public:
  // IPropertyNotifySink
  STDMETHODIMP QueryInterface(REFIID riid, void** ppv);
  STDMETHODIMP_(ULONG) AddRef();
  STDMETHODIMP_(ULONG) Release();
  STDMETHODIMP OnChanged(DISPID dispID);
  STDMETHODIMP OnRequestEdit(DISPID dispID);

private:
  // WM_XXX handlers
  LRESULT OnCreate(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& lResult);
  LRESULT OnSize(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& lResult);
  LRESULT OnClose(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& lResult);
  void OnFinalMessage(HWND);

  // WM_COMMAND handlers
  LRESULT OnFileNew(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 OnFileSaveAs(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled);
  LRESULT OnFileExit(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled);
  LRESULT OnEditInsertControl(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled);
  LRESULT OnEditProperties(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled);
  LRESULT OnEditShowBullsEye(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled);
  LRESULT OnEditShowDartBoard(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled);
  LRESULT OnHelpAbout(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled);

  // Sink handlers
  void __stdcall OnRingHit(short nRingNumber);

  // Persistance helpers
  bool New();
  bool Save(bool bSaveAs);
  bool Open();
  bool Close();
  void UpdateTitle();

  bool InsertControl(REFCLSID clsid);

private:
  CAxWindow2  m_ax;
  bool        m_bDirty;
  tstring     m_sFileName;
};

#endif  // MAINWND_H

⌨️ 快捷键说明

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