00001
00002
00003
00004
00005
00006 #include "stdafx.h"
00007 #include "FdmApp.h"
00008 #include "FDCButton.h"
00009 #include "mfchelp.h"
00010
00011 #ifdef _DEBUG
00012 #define new DEBUG_NEW
00013 #undef THIS_FILE
00014 static char THIS_FILE[] = __FILE__;
00015 #endif
00016
00017 CFDCButton::CFDCButton()
00018 {
00019 }
00020
00021 CFDCButton::~CFDCButton()
00022 {
00023 }
00024
00025 BEGIN_MESSAGE_MAP(CFDCButton, CWnd)
00026
00027 ON_WM_SIZE()
00028 ON_WM_CREATE()
00029 ON_COMMAND(ID_FDC, OnFDC)
00030
00031 END_MESSAGE_MAP()
00032
00033 #define FDCB_MIN_SIZE 16
00034
00035 void CFDCButton::Create(CWnd *pWndParent)
00036 {
00037 CWnd::CreateEx (WS_EX_TRANSPARENT,
00038 AfxRegisterWndClass (0, NULL,
00039 NULL, NULL),
00040 "", WS_CHILD|WS_VISIBLE,
00041 CRect (0, 0, 120, _TB_SIZE_Y > FDCB_MIN_SIZE ? _TB_SIZE_Y : FDCB_MIN_SIZE+9), pWndParent, 0);
00042
00043 CRect rc;
00044 m_tbFDC.GetItemRect (0, &rc);
00045
00046 SetWindowPos (NULL, 0, 0, rc.Width (), rc.Height (), SWP_NOZORDER | SWP_NOMOVE);
00047 }
00048
00049 void CFDCButton::SetupButton()
00050 {
00051 m_tbFDC.CreateEx (this, TBSTYLE_FLAT | TBSTYLE_TRANSPARENT |
00052 TBSTYLE_LIST | TBSTYLE_AUTOSIZE,
00053 WS_CHILD | WS_VISIBLE | CBRS_ALIGN_TOP | CCS_NORESIZE);
00054
00055 int iCX = _TB_SIZE_X > FDCB_MIN_SIZE ? _TB_SIZE_X : FDCB_MIN_SIZE;
00056 int iCY = _TB_SIZE_Y > FDCB_MIN_SIZE ? _TB_SIZE_Y : FDCB_MIN_SIZE;
00057
00058 m_tbFDC.GetToolBarCtrl ().SetBitmapSize (CSize (_TB_SIZE_X, _TB_SIZE_Y));
00059 m_tbFDC.SetSizes (CSize (_TB_SIZE_X+7, iCY +7),
00060 CSize (_TB_SIZE_X, iCY));
00061
00062 m_FDCImage.Create (iCX, iCY, ILC_COLOR32 | ILC_MASK, 1, 1);
00063 m_tbFDC.GetToolBarCtrl ().SetImageList (&m_FDCImage);
00064
00065
00066 CString strFile = fsGetDataFilePath ("fdmcsbn.ico");
00067 HANDLE hFile = CreateFile (strFile, GENERIC_WRITE, 0, NULL,
00068 CREATE_ALWAYS, FILE_ATTRIBUTE_HIDDEN, NULL);
00069 if (hFile != INVALID_HANDLE_VALUE)
00070 {
00071 DWORD dw;
00072 WriteFile (hFile, m_pCusts->get_ButtonInfo ()->pbIcon,
00073 m_pCusts->get_ButtonInfo ()->dwSize, &dw, NULL);
00074 CloseHandle (hFile);
00075
00076 HICON hIco = (HICON)LoadImage (NULL, strFile, IMAGE_ICON, 0, 0, LR_LOADFROMFILE);
00077 m_FDCImage.Add (hIco);
00078 }
00079
00080 UINT id = ID_FDC;
00081 m_tbFDC.SetButtons (&id, 1);
00082 m_tbFDC.SetButtonText (0, m_pCusts->get_ButtonInfo ()->pszText);
00083 }
00084
00085 void CFDCButton::OnSize(UINT nType, int cx, int cy)
00086 {
00087 CWnd::OnSize(nType, cx, cy);
00088 m_tbFDC.SetWindowPos (NULL, 0, 0, cx, (_TB_SIZE_Y > FDCB_MIN_SIZE ? _TB_SIZE_Y : FDCB_MIN_SIZE)+7, SWP_NOZORDER);
00089 }
00090
00091 int CFDCButton::OnCreate(LPCREATESTRUCT lpCreateStruct)
00092 {
00093 if (CWnd::OnCreate(lpCreateStruct) == -1)
00094 return -1;
00095
00096 SetupButton ();
00097
00098 return 0;
00099 }
00100
00101 void CFDCButton::OnFDC()
00102 {
00103 fsOpenUrlInBrowser (m_pCusts->get_ButtonInfo ()->pszLinksTo);
00104 }
00105