00001
00002
00003
00004
00005
00006 #include "stdafx.h"
00007 #include "FdmApp.h"
00008 #include "Dlg_SpreadHelp_LinkCode.h"
00009
00010 #ifdef _DEBUG
00011 #define new DEBUG_NEW
00012 #undef THIS_FILE
00013 static char THIS_FILE[] = __FILE__;
00014 #endif
00015
00016 #define IMGT_DRAW 2
00017
00018 #define IMGT_EXIT 4
00019
00020 CDlg_SpreadHelp_LinkCode::CDlg_SpreadHelp_LinkCode(CWnd* pParent )
00021 : CDialog(CDlg_SpreadHelp_LinkCode::IDD, pParent)
00022 {
00023 m_iCurrentFrame = 0;
00024 m_bRunning = FALSE;
00025 m_dwThrJob = 0;
00026 }
00027
00028 void CDlg_SpreadHelp_LinkCode::DoDataExchange(CDataExchange* pDX)
00029 {
00030 CDialog::DoDataExchange(pDX);
00031
00032
00033 }
00034
00035 BEGIN_MESSAGE_MAP(CDlg_SpreadHelp_LinkCode, CDialog)
00036
00037 ON_WM_TIMER()
00038 ON_WM_PAINT()
00039 ON_WM_CTLCOLOR()
00040 ON_BN_CLICKED(IDC_COPYTOCLIPBOARD, OnCopytoclipboard)
00041 ON_BN_CLICKED(IDC_MOREEXAMPLES, OnMoreexamples)
00042
00043 END_MESSAGE_MAP()
00044
00045 BOOL CDlg_SpreadHelp_LinkCode::OnInitDialog()
00046 {
00047 CDialog::OnInitDialog();
00048
00049 m_bRunning = TRUE;
00050
00051 m_fntFDM.CreateFont (15, 0, 0, 0, FW_NORMAL, 0, TRUE, 0, DEFAULT_CHARSET,
00052 0, 0, 0, 0, "MS Sans Serif");
00053
00054 m_bRunning = TRUE;
00055 m_dwThrJob = IMGT_DRAW;
00056 m_bImgLoaded = FALSE;
00057
00058 DWORD dw;
00059 CloseHandle (
00060 CreateThread (NULL, 0, _threadImage, this, 0, &dw));
00061
00062 while (m_bImgLoaded == FALSE)
00063 Sleep (10);
00064
00065 SetDlgItemText (IDC_HTMLCODE, get_HTMLCode ());
00066
00067 ApplyLanguage ();
00068
00069 return TRUE;
00070
00071 }
00072
00073 void CDlg_SpreadHelp_LinkCode::OnTimer(UINT nIDEvent)
00074 {
00075 if (m_iCurrentFrame == m_img.get_FrameCount ())
00076 m_iCurrentFrame = 0;
00077
00078 KillTimer (1);
00079 SetTimer (1, m_img.get_FrameDelay (m_iCurrentFrame) * 10, NULL);
00080
00081 m_img.set_CurrentFrame (m_iCurrentFrame++);
00082
00083 m_dwThrJob |= IMGT_DRAW;
00084
00085 CDialog::OnTimer(nIDEvent);
00086 }
00087
00088 void CDlg_SpreadHelp_LinkCode::OnPaint()
00089 {
00090 CDialog::OnPaint ();
00091 m_dwThrJob |= IMGT_DRAW;
00092 }
00093
00094 DWORD WINAPI CDlg_SpreadHelp_LinkCode::_threadImage(LPVOID lp)
00095 {
00096 CoInitialize (NULL);
00097 CDlg_SpreadHelp_LinkCode* pThis = (CDlg_SpreadHelp_LinkCode*) lp;
00098
00099 pThis->m_bRunning = TRUE;
00100
00101 pThis->m_img.Load ("fdm_01.gif");
00102 pThis->m_bImgLoaded = TRUE;
00103
00104 if (pThis->m_img.get_FrameCount ())
00105 {
00106 pThis->m_iCurrentFrame = 0;
00107 pThis->SetTimer (1, pThis->m_img.get_FrameDelay (0) * 10, NULL);
00108 }
00109
00110 while ((pThis->m_dwThrJob & IMGT_EXIT) == 0)
00111 {
00112 if (pThis->m_dwThrJob & IMGT_DRAW)
00113 {
00114 if (pThis->m_img.is_Loaded ())
00115 {
00116 CRect rc;
00117 pThis->GetClientRect (&rc);
00118 CSize size = pThis->m_img.get_Size ();
00119
00120 rc.top = 5;
00121 rc.bottom = rc.top + size.cy;
00122
00123 if (rc.Width () <= size.cx)
00124 {
00125 rc.right = size.cx;
00126 }
00127 else
00128 {
00129 int w = (rc.Width () - size.cx) / 2;
00130 rc.left = w;
00131 rc.right = w + size.cx;
00132 }
00133
00134 CDC* dc = pThis->GetDC ();
00135 pThis->m_img.Draw (*dc, rc);
00136 pThis->ReleaseDC (dc);
00137 }
00138
00139 pThis->m_dwThrJob &= ~IMGT_DRAW;
00140 }
00141
00142 Sleep (50);
00143 }
00144
00145 LOG ("releasing img...");
00146 pThis->m_img.Free ();
00147 LOG ("ok." << nl);
00148 pThis->m_dwThrJob &= ~IMGT_EXIT;
00149 pThis->m_bRunning = FALSE;
00150
00151 CoUninitialize ();
00152
00153 return 0;
00154 }
00155
00156 void CDlg_SpreadHelp_LinkCode::OnOK()
00157 {
00158 ShutdownThread ();
00159 CDialog::OnOK();
00160 }
00161
00162 void CDlg_SpreadHelp_LinkCode::ShutdownThread()
00163 {
00164 m_dwThrJob |= IMGT_EXIT;
00165 while (m_bRunning)
00166 Sleep (5);
00167 }
00168
00169 HBRUSH CDlg_SpreadHelp_LinkCode::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
00170 {
00171 HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
00172
00173 if (pWnd->m_hWnd == GetDlgItem (IDC__FDM)->m_hWnd)
00174 {
00175 pDC->SelectObject (m_fntFDM);
00176 pDC->SetTextColor (RGB (0, 0, 200));
00177 }
00178
00179
00180 return hbr;
00181 }
00182
00183 void CDlg_SpreadHelp_LinkCode::OnCancel()
00184 {
00185 ShutdownThread ();
00186 CDialog::OnCancel();
00187 }
00188
00189 void CDlg_SpreadHelp_LinkCode::OnCopytoclipboard()
00190 {
00191 _ClipbrdMgr.Text (get_HTMLCode ());
00192 }
00193
00194 void CDlg_SpreadHelp_LinkCode::OnMoreexamples()
00195 {
00196 fsOpenUrlInBrowser ("http://www.opendownloadmanager.org/linktous.htm");
00197 }
00198
00199 CString CDlg_SpreadHelp_LinkCode::get_HTMLCode()
00200 {
00201 return "<!--Open Download Manager code//--> <A href=\"http://www.opendownloadmanager.org/\" title=\"Open Download Manager\">\
00202 <img src=\"http://www.opendownloadmanager.org/i/odm-01.gif\" width=\"88\" height=\"31\" border=\"0\" alt = \"Open Download Manager\" > <br>Open Download Manager </A> <!--End of Open Download Manager code//-->";
00203 }
00204
00205 void CDlg_SpreadHelp_LinkCode::ApplyLanguage()
00206 {
00207 fsDlgLngInfo lnginfo [] = {
00208 fsDlgLngInfo (IDC_COPYTOCLIPBOARD, L_COPYTOCLIPBOARD),
00209 fsDlgLngInfo (IDC_MOREEXAMPLES, L_MOREEXAMPLES),
00210 };
00211
00212 _LngMgr.ApplyLanguage (this, lnginfo, sizeof (lnginfo) / sizeof (fsDlgLngInfo), L_LINKHTMLCODE);
00213 }