author | Michael Krelin <hacker@klever.net> | 2004-07-05 01:53:09 (UTC) |
---|---|---|
committer | Michael Krelin <hacker@klever.net> | 2004-07-05 01:53:09 (UTC) |
commit | 5305ddd8332ebd905ebef3b8365fc0d736858a7a (patch) (unidiff) | |
tree | ba6dc874bdcb00bd2e116b377a92f347ab81a733 /DragPad.cpp | |
download | dipstick-5305ddd8332ebd905ebef3b8365fc0d736858a7a.zip dipstick-5305ddd8332ebd905ebef3b8365fc0d736858a7a.tar.gz dipstick-5305ddd8332ebd905ebef3b8365fc0d736858a7a.tar.bz2 |
initial commit into svn repository
git-svn-id: http://svn.klever.net/kin/dipstick/trunk@1 fe716a7a-6dde-0310-88d9-d003556173a8
-rw-r--r-- | DragPad.cpp | 213 |
1 files changed, 213 insertions, 0 deletions
diff --git a/DragPad.cpp b/DragPad.cpp new file mode 100644 index 0000000..9b0aa31 --- a/dev/null +++ b/DragPad.cpp | |||
@@ -0,0 +1,213 @@ | |||
1 | // DragPad.cpp : implementation file | ||
2 | // | ||
3 | |||
4 | #include "stdafx.h" | ||
5 | #include "Dipstick.h" | ||
6 | #include "DragPad.h" | ||
7 | #include "DipstickDlg.h" | ||
8 | |||
9 | #ifdef _DEBUG | ||
10 | #define new DEBUG_NEW | ||
11 | #undef THIS_FILE | ||
12 | static char THIS_FILE[] = __FILE__; | ||
13 | #endif | ||
14 | |||
15 | ///////////////////////////////////////////////////////////////////////////// | ||
16 | // CDragPad dialog | ||
17 | |||
18 | |||
19 | CDragPad::CDragPad(CWnd* pParent /*=NULL*/) | ||
20 | : CDialog(CDragPad::IDD, pParent) | ||
21 | { | ||
22 | //{{AFX_DATA_INIT(CDragPad) | ||
23 | //}}AFX_DATA_INIT | ||
24 | m_DropTarget.m_Pad = this; | ||
25 | } | ||
26 | |||
27 | CDragPad::~CDragPad() | ||
28 | { | ||
29 | } | ||
30 | |||
31 | void CDragPad::DoDataExchange(CDataExchange* pDX) | ||
32 | { | ||
33 | CDialog::DoDataExchange(pDX); | ||
34 | //{{AFX_DATA_MAP(CDragPad) | ||
35 | DDX_Control(pDX, IDC_DNDTARGET, m_DragNDropTarget); | ||
36 | //}}AFX_DATA_MAP | ||
37 | } | ||
38 | |||
39 | |||
40 | BEGIN_MESSAGE_MAP(CDragPad, CDialog) | ||
41 | //{{AFX_MSG_MAP(CDragPad) | ||
42 | ON_WM_WINDOWPOSCHANGED() | ||
43 | ON_WM_NCACTIVATE() | ||
44 | ON_WM_DESTROY() | ||
45 | ON_WM_CREATE() | ||
46 | ON_WM_LBUTTONDBLCLK() | ||
47 | ON_WM_RBUTTONDOWN() | ||
48 | ON_WM_LBUTTONDOWN() | ||
49 | ON_WM_HELPINFO() | ||
50 | //}}AFX_MSG_MAP | ||
51 | END_MESSAGE_MAP() | ||
52 | |||
53 | ///////////////////////////////////////////////////////////////////////////// | ||
54 | // CDragPad message handlers | ||
55 | |||
56 | BOOL CDragPad::OnInitDialog() | ||
57 | { | ||
58 | CDialog::OnInitDialog(); | ||
59 | |||
60 | m_DropTarget.Register(&m_DragNDropTarget); | ||
61 | m_DragNDropTarget.Open(IDR_DNDAVI); | ||
62 | CRect rc; | ||
63 | m_DragNDropTarget.GetClientRect(rc); | ||
64 | m_DragNDropTarget.MoveWindow(rc,FALSE); | ||
65 | CRect wrc,crc,drc, nrc; | ||
66 | GetWindowRect(wrc); | ||
67 | GetClientRect(crc); | ||
68 | GetDesktopWindow()->GetClientRect(drc); | ||
69 | nrc.left = drc.right-(rc.Width()+(wrc.Width()-crc.Width())) - 5; | ||
70 | nrc.top = drc.bottom-(rc.Height()+(wrc.Height()-crc.Height())) - 5; | ||
71 | CWinApp *app = AfxGetApp(); | ||
72 | ASSERT(app); | ||
73 | ScreenToClient(nrc); | ||
74 | nrc.top=app->GetProfileInt("Windows","DragPadTop",nrc.top); | ||
75 | nrc.left=app->GetProfileInt("Windows","DragPadLeft",nrc.left); | ||
76 | nrc.right = nrc.left+(rc.Width()+(wrc.Width()-crc.Width())); | ||
77 | nrc.bottom = nrc.top+(rc.Height()+(wrc.Height()-crc.Height())); | ||
78 | MoveWindow(nrc,FALSE); | ||
79 | |||
80 | // CG: The following block was added by the ToolTips component. | ||
81 | { | ||
82 | // Create the ToolTip control. | ||
83 | m_tooltip.Create(this); | ||
84 | m_tooltip.Activate(TRUE); | ||
85 | } | ||
86 | |||
87 | return TRUE; // return TRUE unless you set the focus to a control | ||
88 | // EXCEPTION: OCX Property Pages should return FALSE | ||
89 | } | ||
90 | |||
91 | void CDragPad::OnWindowPosChanged(WINDOWPOS FAR* lpwndpos) | ||
92 | { | ||
93 | CDialog::OnWindowPosChanged(lpwndpos); | ||
94 | if(lpwndpos->hwnd!=m_hWnd) | ||
95 | SetWindowPos(&wndTopMost,0,0,0,0,SWP_NOACTIVATE|SWP_NOMOVE|SWP_NOSIZE); | ||
96 | } | ||
97 | |||
98 | BOOL CDragPad::PreCreateWindow(CREATESTRUCT& cs) | ||
99 | { | ||
100 | cs.dwExStyle|=WS_EX_TOPMOST; | ||
101 | return CDialog::PreCreateWindow(cs); | ||
102 | } | ||
103 | |||
104 | BOOL CDragPad::OnNcActivate(BOOL bActive) | ||
105 | { | ||
106 | if(!bActive) | ||
107 | SetWindowPos(&wndTopMost,0,0,0,0,SWP_NOACTIVATE|SWP_NOMOVE|SWP_NOSIZE); | ||
108 | return CDialog::OnNcActivate(bActive); | ||
109 | } | ||
110 | |||
111 | void CDragPad::OnDestroy() | ||
112 | { | ||
113 | CDialog::OnDestroy(); | ||
114 | TRACE0("DestroyPad\n"); | ||
115 | RevokeDragDrop(m_DragNDropTarget.m_hWnd); | ||
116 | } | ||
117 | |||
118 | int CDragPad::OnCreate(LPCREATESTRUCT lpCreateStruct) | ||
119 | { | ||
120 | if (CDialog::OnCreate(lpCreateStruct) == -1) | ||
121 | return -1; | ||
122 | CRect rc,drc, nrc; | ||
123 | CWinApp *app = AfxGetApp(); | ||
124 | ASSERT(app); | ||
125 | GetWindowRect(rc); | ||
126 | GetDesktopWindow()->GetClientRect(drc); | ||
127 | nrc.left = drc.right-rc.Width() - 5; | ||
128 | nrc.top = drc.bottom-rc.Height() - 5; | ||
129 | ScreenToClient(nrc); | ||
130 | nrc.top=app->GetProfileInt("Windows","DragPadTop",nrc.top); | ||
131 | nrc.left=app->GetProfileInt("Windows","DragPadLeft",nrc.left); | ||
132 | nrc.right = nrc.left+rc.Width(); | ||
133 | nrc.bottom = nrc.top+rc.Height(); | ||
134 | MoveWindow(nrc); | ||
135 | return 0; | ||
136 | } | ||
137 | |||
138 | void CDragPad::OnLButtonDblClk(UINT nFlags, CPoint point) | ||
139 | { | ||
140 | ToggleMainWindowDisplay(); | ||
141 | CDialog::OnLButtonDblClk(nFlags, point); | ||
142 | } | ||
143 | |||
144 | void CDragPad::OnRButtonDown(UINT nFlags, CPoint point) | ||
145 | { | ||
146 | CMenu menus; | ||
147 | VERIFY(menus.LoadMenu(IDR_MENU)); | ||
148 | CMenu *dpm = menus.GetSubMenu(0);// *** Position? | ||
149 | ASSERT(dpm); | ||
150 | CPoint pt = point; | ||
151 | ClientToScreen(&pt); | ||
152 | m_Daddy->UpdateControlButtons(); | ||
153 | dpm->CheckMenuItem(ID_DRAGPAD_SHOWMAINWINDOW,MF_BYCOMMAND|(m_Daddy->m_bShown?MF_CHECKED:MF_UNCHECKED)); | ||
154 | dpm->EnableMenuItem(ID_DRAGPAD_REPINGALL,MF_BYCOMMAND|(m_Daddy->m_RepingAllCtl.IsWindowEnabled()?MF_ENABLED:MF_GRAYED)); | ||
155 | dpm->EnableMenuItem(ID_DRAGPAD_REMOVEALL,MF_BYCOMMAND|(m_Daddy->m_ClearListCtl.IsWindowEnabled()?MF_ENABLED:MF_GRAYED)); | ||
156 | dpm->EnableMenuItem(ID_DRAGPAD_PASTEURL,MF_BYCOMMAND|(m_Daddy->IsPasteableClipboard()?MF_ENABLED:MF_GRAYED)); | ||
157 | dpm->EnableMenuItem(ID_DRAGPAD_ADVANCED_EXPORTLIST,MF_BYCOMMAND|(m_Daddy->m_HostList.GetItemCount()?MF_ENABLED:MF_GRAYED)); | ||
158 | dpm->TrackPopupMenu(TPM_RIGHTALIGN|TPM_LEFTBUTTON|TPM_RIGHTBUTTON,pt.x,pt.y,m_Daddy,NULL); | ||
159 | CDialog::OnRButtonDown(nFlags, point); | ||
160 | } | ||
161 | |||
162 | void CDragPad::OnLButtonDown(UINT nFlags, CPoint point) | ||
163 | { | ||
164 | ToggleMainWindowDisplay(); | ||
165 | CDialog::OnLButtonDown(nFlags, point); | ||
166 | } | ||
167 | |||
168 | void CDragPad::ToggleMainWindowDisplay() | ||
169 | { | ||
170 | if(m_Daddy->IsWindowVisible()){ | ||
171 | m_Daddy->m_bShown=FALSE; | ||
172 | m_Daddy->ShowWindow(SW_HIDE); | ||
173 | }else{ | ||
174 | m_Daddy->m_bShown=TRUE; | ||
175 | m_Daddy->ShowWindow(SW_SHOW); | ||
176 | } | ||
177 | } | ||
178 | |||
179 | BOOL CDragPad::PreTranslateMessage(MSG* pMsg) | ||
180 | { | ||
181 | // CG: The following block was added by the ToolTips component. | ||
182 | { | ||
183 | // Let the ToolTip process this message. | ||
184 | m_tooltip.RelayEvent(pMsg); | ||
185 | |||
186 | return CDialog::PreTranslateMessage(pMsg); | ||
187 | } | ||
188 | } | ||
189 | |||
190 | DROPEFFECT CDUTarget::OnDragEnter(CWnd* pWnd,COleDataObject* pDO,DWORD dwKeyState,CPoint pt) | ||
191 | { | ||
192 | if(m_Pad->m_Daddy->CollectURLs(pDO,TRUE)) | ||
193 | return m_dropAsEntered=DROPEFFECT_LINK|DROPEFFECT_COPY|DROPEFFECT_MOVE; | ||
194 | else | ||
195 | return m_dropAsEntered=DROPEFFECT_NONE; | ||
196 | } | ||
197 | DROPEFFECT CDUTarget::OnDragOver(CWnd* pWnd,COleDataObject* pDO,DWORD dwKeyState,CPoint pt) | ||
198 | { | ||
199 | return m_dropAsEntered; | ||
200 | } | ||
201 | DROPEFFECT CDUTarget::OnDropEx(CWnd* pWnd,COleDataObject* pDO,DROPEFFECT dropDefault,DROPEFFECT dropList,CPoint pt) | ||
202 | { | ||
203 | if(m_Pad->m_Daddy->CollectURLs(pDO,FALSE)) | ||
204 | return DROPEFFECT_LINK|DROPEFFECT_COPY|DROPEFFECT_MOVE; | ||
205 | else | ||
206 | return DROPEFFECT_NONE; | ||
207 | } | ||
208 | |||
209 | BOOL CDragPad::OnHelpInfo(HELPINFO* pHelpInfo) | ||
210 | { | ||
211 | WinHelp(IDD|0x20000l); | ||
212 | return TRUE; | ||
213 | } | ||