使用soui开发的mbc,只支持windows版本
w1146869587
2022-01-24 4905e2e7537d507f218e8e9595485e09d9f3a2b4
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
#pragma once
#include "stdafx.h"
#include "event\NotifyCenter.h"
#include "Shape2D.h"
 
typedef struct tagCaptureArgs
{
    HWND hWnd;//Ô´´°¿Ú¾ä±ú
    POINT pt;//Êó±êËùÔÚµÄλÖÃ
}*LPCaptureArgs;
 
enum EmCaptureStatus
{
    //Õý´¦ÓÚÑ¡ÔñÇøÓò״̬
    CaptureStatus_SelectArea = 0,
 
    //Õý´¦ÓÚÐÞ¸ÄÇøÓò״̬
    CaptureStatus_ModifyArea,
 
    //Õý´¦Óڱ༭״̬
    CaptureStatus_Edit
};
 
enum EmExitEvent
{
    CaptureEvent_Exit,        //Õý³£Í˳ö
    CaptureEvent_Save,        //±£´æÍ˳ö
    CaptureEvent_Complete,    //µã»÷Íê³ÉÍ˳ö
    CaptureEvent_DirectSend    //µã»÷Ö±½Ó·¢ËÍ
    
};
// CMBCaptureWnd
 
class AFX_EXT_CLASS CMBCaptureWnd 
    : public SHostWnd,public SDpiHandler<CMBCaptureWnd>
{
public:
    CMBCaptureWnd(BOOL bHaveComplete = TRUE,BOOL bHaveDirectSend = TRUE);
    virtual ~CMBCaptureWnd();
private:
    BOOL            m_bLayoutInited;
    CCollection<Bitmap*> m_arrUndoImages;
    CShape2D*        m_pShape;//µ±Ç°Ñ¡ÔñµÄÐÎ×´
    //COIToolBarCtrl* m_pToolBar;
//    CToolSettingCtrl* m_pToolSetting;
    Bitmap*    m_pScreenBmp;//ÆÁĻλͼָÕë
    Rect    m_rcExcludeClip;//µ±Ç°Êó±êËùÔÚÇøÓò
    HWND    m_hLastPointWnd;
//    CResourceManager m_rcManager;
    //COIMagnifierCtrl* m_pMagnifierCtrl;
    //Image*    m_pMagnifierImg;
    EmCaptureStatus m_status;
    Point    m_startPoint;
    Point    m_endPoint;
    bool    m_bDrawSelectArea;
    Rect    m_rcLeftTop;//×óÉϽÇ
    Rect    m_rcTop;//ÉÏ·½
    Rect    m_rcRightTop;//ÓÒÉÏ
    Rect    m_rcLeft;
    Rect    m_rcRight;
    Rect    m_rcLeftBottom;
    Rect    m_rcBottom;
    Rect    m_rcRightBottom;
    int        m_nDirect;//ÍÏ×§·½Ïò£¬Ä¬ÈÏÊÇHTNOWHERE
    bool    m_bDrop;//ÊÇ·ñÕýÔÚÍÏ×§
    bool    m_bMouseDown;
    UINT    m_nSelectedControlId;
    int        m_nImageIndex;//ͼƬË÷Òý
    //COIUIRichEdit* m_pEdit;
    EmExitEvent m_exitEvent;
    CString     m_strPath;
    BOOL    m_bHaveComplete;
    BOOL    m_bHaveDirectSend;
 
    HCURSOR m_hCursor;
    int        m_cxStart;
    int        m_cyStart;
    int        m_cxScreen;
    int        m_cyScreen;
public:
    void OnClose()
    { 
        AnimateHostWindow(200, AW_CENTER | AW_HIDE);
        DestroyWindow();
    }
    void OnMaximize()
    {
        SendMessage(WM_SYSCOMMAND, SC_MAXIMIZE);
    }
    void OnRestore()
    {
        SendMessage(WM_SYSCOMMAND, SC_RESTORE);
    }
    void OnMinimize()
    {
        SendMessage(WM_SYSCOMMAND, SC_MINIMIZE);
    }
 
    int OnCreate(LPCREATESTRUCT lpCreateStruct);
    BOOL OnInitDialog(HWND wndFocus, LPARAM lInitParam);
 
protected:
    EVENT_MAP_BEGIN()
    EVENT_MAP_END()
    BEGIN_MSG_MAP_EX(CMBCaptureWnd)
        MSG_WM_CREATE(OnCreate)
        MSG_WM_INITDIALOG(OnInitDialog)
        MSG_WM_CLOSE(OnClose)
        CHAIN_MSG_MAP(SHostWnd)
        REFLECT_NOTIFICATIONS_EX()
        CHAIN_MSG_MAP(SDpiHandler<CMBCaptureWnd>)
    END_MSG_MAP()
private:
    void Init();
};