dialogDlg.cpp 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646
  1. // dialogDlg.cpp : implementation file
  2. //
  3. #include "stdafx.h"
  4. #include "dialog.h"
  5. #include "dialogDlg.h"
  6. //#include ".\dialogdlg.h"
  7. #ifdef _DEBUG
  8. #define new DEBUG_NEW
  9. #undef THIS_FILE
  10. static char THIS_FILE[] = __FILE__;
  11. #endif
  12. /////////////////////////////////////////////////////////////////////////////
  13. // CAboutDlg dialog used for App About
  14. class CAboutDlg : public CDialog
  15. {
  16. public:
  17. CAboutDlg();
  18. // Dialog Data
  19. //{{AFX_DATA(CAboutDlg)
  20. enum { IDD = IDD_ABOUTBOX };
  21. //}}AFX_DATA
  22. // ClassWizard generated virtual function overrides
  23. //{{AFX_VIRTUAL(CAboutDlg)
  24. protected:
  25. virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
  26. //}}AFX_VIRTUAL
  27. // Implementation
  28. protected:
  29. //{{AFX_MSG(CAboutDlg)
  30. //}}AFX_MSG
  31. DECLARE_MESSAGE_MAP()
  32. };
  33. CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
  34. {
  35. //{{AFX_DATA_INIT(CAboutDlg)
  36. //}}AFX_DATA_INIT
  37. }
  38. void CAboutDlg::DoDataExchange(CDataExchange* pDX)
  39. {
  40. CDialog::DoDataExchange(pDX);
  41. //{{AFX_DATA_MAP(CAboutDlg)
  42. //}}AFX_DATA_MAP
  43. }
  44. BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
  45. //{{AFX_MSG_MAP(CAboutDlg)
  46. // No message handlers
  47. //}}AFX_MSG_MAP
  48. END_MESSAGE_MAP()
  49. /////////////////////////////////////////////////////////////////////////////
  50. // CDialogDlg dialog
  51. CDialogDlg::CDialogDlg(CWnd* pParent /*=NULL*/)
  52. : CDialog(CDialogDlg::IDD, pParent)
  53. {
  54. m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
  55. m_bShow=TRUE;
  56. }
  57. void CDialogDlg::DoDataExchange(CDataExchange* pDX)
  58. {
  59. CDialog::DoDataExchange(pDX);
  60. //{{AFX_DATA_MAP(CDialogDlg)
  61. DDX_Control(pDX, IDC_FIND, m_cbFind);
  62. DDX_Control(pDX, IDC_STATUSBAR, m_StatusBar);
  63. DDX_Control(pDX, IDC_VIEW, m_View);
  64. DDX_Control(pDX, IDC_HIDE, m_btnHide);
  65. DDX_Control(pDX, IDC_TOOLBAR, m_ToolBar);
  66. DDX_Control(pDX, IDC_PANEL, m_Panel);
  67. DDX_Control(pDX, IDC_HELPME, m_btnHelp);
  68. DDX_Control(pDX, IDC_BACK, m_btnBack);
  69. DDX_Control(pDX, IDC_MENU, m_btnMenu);
  70. DDX_Control(pDX, IDC_FORE, m_btnFore);
  71. DDX_Control(pDX, IDC_DROPDOWN, m_btnDropDown);
  72. DDX_Control(pDX, IDC_GO, m_btnGo);
  73. DDX_Control(pDX, IDC_MAINTITLE, m_MainTitle);
  74. DDX_Control(pDX, IDC_TAB, m_Tab);
  75. DDX_Control(pDX, IDC_DOWN, m_btnDown);
  76. DDX_Control(pDX, IDC_TITLE, m_Title);
  77. DDX_Control(pDX, IDC_UP, m_btnUp);
  78. //}}AFX_DATA_MAP
  79. }
  80. BEGIN_MESSAGE_MAP(CDialogDlg, CDialog)
  81. //{{AFX_MSG_MAP(CDialogDlg)
  82. ON_WM_SYSCOMMAND()
  83. ON_WM_PAINT()
  84. ON_WM_QUERYDRAGICON()
  85. ON_WM_SIZE()
  86. ON_BN_CLICKED(IDC_HIDE, OnHide)
  87. ON_BN_CLICKED(ID_SCHEME, OnScheme)
  88. ON_WM_GETMINMAXINFO()
  89. ON_COMMAND(ID_SCHEME_BLUE, OnSchemeBlue)
  90. ON_COMMAND(ID_SCHEME_SLIVER, OnSchemeSliver)
  91. ON_COMMAND(ID_SCHEME_DEFAULT, OnSchemeDefault)
  92. ON_COMMAND(ID_SCHEME_GREEN, OnSchemeGreen)
  93. //}}AFX_MSG_MAP
  94. ON_BN_CLICKED(IDC_GO, OnBnClickedGo)
  95. ON_BN_CLICKED(IDC_MENU, OnBnClickedMenu)
  96. END_MESSAGE_MAP()
  97. /////////////////////////////////////////////////////////////////////////////
  98. // CDialogDlg message handlers
  99. BOOL CDialogDlg::OnInitDialog()
  100. {
  101. CDialog::OnInitDialog();
  102. ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
  103. ASSERT(IDM_ABOUTBOX < 0xF000);
  104. CMenu* pSysMenu = GetSystemMenu(FALSE);
  105. if (pSysMenu != NULL)
  106. {
  107. CString strAboutMenu;
  108. strAboutMenu.LoadString(IDS_ABOUTBOX);
  109. if (!strAboutMenu.IsEmpty())
  110. {
  111. pSysMenu->AppendMenu(MF_SEPARATOR);
  112. pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
  113. }
  114. }
  115. // Set the icon for this dialog. The framework does this automatically
  116. // when the application's main window is not a dialog
  117. SetIcon(m_hIcon, TRUE); // Set big icon
  118. SetIcon(m_hIcon, FALSE); // Set small icon
  119. // TODO: Add extra initialization here
  120. // 缺省设置:设置缺省菜单,缺省皮肤;
  121. m_nMenuID=ID_SCHEME_DEFAULT;
  122. LoadSkin("Themes\\DefaultTheme\\DefaultTheme.ini");
  123. SetWindowPos(NULL,m_BorderSizes.left,m_BorderSizes.top,m_BorderSizes.right,m_BorderSizes.bottom,SWP_NOMOVE);
  124. //移动主对话框位置
  125. #if 0
  126. int cx=GetSystemMetrics(SM_CXSCREEN); //屏幕宽度
  127. int cy=GetSystemMetrics(SM_CYSCREEN); //屏幕高度
  128. CRect rectWindow;
  129. GetWindowRect(&rectWindow); //得到对话框在屏幕上的坐标区域
  130. int w=rectWindow.Width();
  131. int h=rectWindow.Height();
  132. CRect rc;
  133. GetWindowRect(&rc);
  134. //MoveWindow(cx-w,cy-h-28-ln,w,h+ln,true);//移动窗体并改变大小
  135. //SetWindowPos(&wndTop,rc.left,rc.top,rc.Width(),rc.Height()+ln,SWP_NOMOVE);//不移动位置,但改变大小
  136. #endif
  137. return TRUE; // return TRUE unless you set the focus to a control
  138. }
  139. void CDialogDlg::OnSysCommand(UINT nID, LPARAM lParam)
  140. {
  141. if ((nID & 0xFFF0) == IDM_ABOUTBOX)
  142. {
  143. CAboutDlg dlgAbout;
  144. dlgAbout.DoModal();
  145. }
  146. else
  147. {
  148. CDialog::OnSysCommand(nID, lParam);
  149. }
  150. }
  151. void CDialogDlg::OnPaint()
  152. {
  153. CPaintDC dc(this);
  154. if (IsIconic())
  155. {
  156. // device context for painting
  157. //;
  158. SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);
  159. // Center icon in client rectangle
  160. int cxIcon = GetSystemMetrics(SM_CXICON);
  161. int cyIcon = GetSystemMetrics(SM_CYICON);
  162. CRect rect;
  163. GetClientRect(&rect);
  164. int x = (rect.Width() - cxIcon + 1) / 2;
  165. int y = (rect.Height() - cyIcon + 1) / 2;
  166. // Draw the icon
  167. dc.DrawIcon(x, y, m_hIcon);
  168. }
  169. else
  170. {
  171. CRect rc;
  172. GetClientRect(&rc);
  173. m_bmpBottomBorder.ExtendDraw(&dc,CRect(0,rc.Height()-3 ,rc.Width(),rc.Height()),50,0);
  174. m_bmpRightBorder.ExtendDraw(&dc,&CRect(rc.Width()-3 ,0,rc.Width(),rc.Height()),0,50);
  175. rc.DeflateRect(3,3);
  176. //主窗口背景;
  177. dc.FillSolidRect(&rc,m_MainWindowBackGround);
  178. }
  179. }
  180. HCURSOR CDialogDlg::OnQueryDragIcon()
  181. {
  182. return (HCURSOR) m_hIcon;
  183. }
  184. void CDialogDlg::OnSize(UINT nType, int cx, int cy)
  185. {
  186. CDialog::OnSize(nType, cx, cy);
  187. CRect rc;
  188. //Panel
  189. m_Panel.GetClientRect(rc);
  190. m_Panel.SetWindowPos(NULL,0,40,187,cy-40-3, NULL);
  191. m_Tab.SetWindowPos(NULL,0,10,10,10, SWP_NOSIZE);
  192. m_Title.SetWindowPos(NULL,m_LeftTitleBarPos.cx ,m_LeftTitleBarPos.cy,154,26, NULL);
  193. rc.top =176;
  194. m_Panel.RedrawWindow(rc,NULL);
  195. //maintitle
  196. m_MainTitle.SetWindowPos(NULL,0,0,cx,40, NULL);
  197. m_btnGo.SetWindowPos(NULL,cx+m_ButtonGoPos.cx ,m_ButtonGoPos.cy ,0,0, SWP_NOSIZE);
  198. m_btnDropDown.SetWindowPos(NULL,cx+m_ButtonGoDropDownPos.cx ,m_ButtonGoDropDownPos.cy ,0,0, SWP_NOSIZE);
  199. m_btnHelp.SetWindowPos(NULL,cx+m_ButtonHelpMePos.cx ,m_ButtonHelpMePos.cy,0,0, SWP_NOSIZE);
  200. m_btnBack.SetWindowPos(NULL,cx+m_ButtonBackwardPos.cx ,m_ButtonBackwardPos.cy,0,0, SWP_NOSIZE);
  201. m_btnFore.SetWindowPos(NULL,cx+m_ButtonForewardPos.cx ,m_ButtonForewardPos.cy,0,0, SWP_NOSIZE);
  202. m_btnMenu.SetWindowPos(NULL,cx+m_ButtonMenusPos.cx ,m_ButtonMenusPos.cy,0,0, SWP_NOSIZE);
  203. m_cbFind.ShowWindow(SW_HIDE);
  204. m_cbFind.SetWindowPos(NULL,77 ,5,cx+m_ButtonGoPos.cx-80,15, NULL);
  205. m_cbFind.ShowWindow(SW_SHOW);
  206. m_MainTitle.RedrawWindow();
  207. SetViewSize(cx, cy);
  208. }
  209. void CDialogDlg::OnHide()
  210. {
  211. CRect rc;
  212. GetClientRect(rc);
  213. // TODO: Add your control notification handler code here
  214. CEnBitmap bmp;
  215. if (m_bShow)
  216. {
  217. m_Panel.ShowWindow(SW_HIDE) ;
  218. m_bShow=FALSE;
  219. bmp.LoadImage(m_strPathName + "\\" +"ShowLeft.bmp");
  220. }
  221. else
  222. {
  223. m_Panel.ShowWindow(SW_SHOW) ;
  224. m_bShow=TRUE;
  225. bmp.LoadImage(m_strPathName + "\\" +"HideLeft.bmp");
  226. }
  227. m_btnHide.SetBitmap((HBITMAP)bmp.m_hObject);
  228. SetViewSize(rc.Width(),rc.Height() );
  229. }
  230. void CDialogDlg::LoadSkin(CString strFileName)
  231. {
  232. // 获取对话框客户区域 [7/21/2013 Zero.t]
  233. CRect rc;
  234. GetClientRect(&rc);
  235. int cx=rc.Width();
  236. int cy=rc.Height();
  237. // 获取皮肤主题路径 [7/21/2013 Zero.t]
  238. m_strPathName=GetPathName(strFileName);
  239. static const char *ThemeMetrics = "ThemeMetrics";
  240. static const char *ThemeColors = "ThemeColors";
  241. static const char *ThemeColor = "ThemeColor";
  242. char buf[MAX_PATH];
  243. // 获取各贴图信息 [7/21/2013 Zero.t]
  244. GetPrivateProfileString(ThemeColors,"MainWindowBackGround","",buf,MAX_PATH,strFileName); // 主窗口背景 [7/21/2013 Zero.t]
  245. m_MainWindowBackGround=GetColor(buf);
  246. GetPrivateProfileString(ThemeColors,"ExplainViewBackGround","",buf,MAX_PATH,strFileName); // 解释查看背景 [7/21/2013 Zero.t]
  247. m_ExplainViewBackGround=GetColor(buf);
  248. m_View.SetBKColor(m_ExplainViewBackGround);
  249. GetPrivateProfileString(ThemeColors,"ExplainViewBorder","",buf,MAX_PATH,strFileName); // 解释边框 [7/21/2013 Zero.t]
  250. m_ExplainViewBorder=GetColor(buf);
  251. GetPrivateProfileString(ThemeColors,"NormalText","",buf,MAX_PATH,strFileName); // 正常文本 [7/21/2013 Zero.t]
  252. m_NormalText=GetColor(buf);
  253. //设置边框
  254. m_bmpBottomBorder.LoadImage(m_strPathName + "\\" + "BottomBorder.bmp") ;
  255. m_bmpRightBorder.LoadImage(m_strPathName + "\\" +"RightBorder.bmp") ;
  256. GetPrivateProfileString(ThemeMetrics,"BorderSizes","",buf,MAX_PATH,strFileName);
  257. m_BorderSizes=GetRect(buf);
  258. //Tab
  259. m_Panel.LoadBitmap(m_strPathName + "\\" +"LeftPanel.bmp");
  260. //m_Panel.SetExtendPoint(50,40);
  261. m_Panel.SetExtendPoint(50,40); // 最好是对半分,原图的大小是100*80
  262. m_Tab.SetParent(&m_Panel);
  263. m_Tab.LoadBitmap(m_strPathName + "\\" +"TabBkgrd.bmp");
  264. m_Tab.Clear();
  265. m_Tab.AddTab(m_strPathName + "\\" +"TabIndex.bmp");
  266. m_Tab.AddTab(m_strPathName + "\\" +"TabWizard.bmp");
  267. m_Tab.AddTab(m_strPathName + "\\" +"TabSearch.bmp");
  268. m_Tab.AddTab(m_strPathName + "\\" +"TabAppendix.bmp");
  269. m_Title.LoadBitmap(m_strPathName + "\\" +"LeftTitleBar.bmp") ;
  270. m_Title.SetParent(&m_Panel);
  271. GetPrivateProfileString(ThemeMetrics,"LeftTitleBarPos","",buf,MAX_PATH,strFileName);
  272. m_LeftTitleBarPos=GetSize(buf);
  273. m_Title.SetWindowPos(NULL,m_LeftTitleBarPos.cx ,m_LeftTitleBarPos.cy,154,26, NULL);
  274. m_Title.SetText("附录",10,RGB(0,0,0));
  275. m_btnUp.SetParent(&m_Title);
  276. m_btnUp.SetWindowPos(NULL,90,0,100,100, SWP_NOSIZE);
  277. m_btnUp.LoadBitmap(m_strPathName + "\\" +"jumpnext.bmp");
  278. m_btnDown.SetParent(&m_Title);
  279. m_btnDown.SetWindowPos(NULL,113,0,100,100, SWP_NOSIZE);
  280. m_btnDown.LoadBitmap(m_strPathName + "\\" +"jumpprev.bmp");
  281. /************************************************************************/
  282. /*
  283. Skin按钮实例演示过程:
  284. // 0.首先,获取对话框的客户区大小(长宽);
  285. CRect rc;
  286. GetClientRect(&rc);
  287. int cx=rc.Width(); // 本例中,cx=792
  288. int cy=rc.Height(); // 本例中,cy=531
  289. // 2.获取按钮剪裁图片在背景图中的位置
  290. // 本例中,m_btnSize={-246,4};
  291. // 其中,要注意的一点是,剪裁图片在原图的位置坐标系,是下面坐标系:x向左为正方向,y向上为正方向;
  292. //
  293. // x+
  294. // 原图(0,0)----------------> |
  295. // | |
  296. // | |
  297. // x+ --------------btn(0,0)------------------- -x
  298. // |
  299. // |
  300. // |
  301. // -y
  302. //
  303. // 所以,按钮的位置相对原坐标系来说,按钮必须要取x的余值。
  304. //
  305. char buf[MAX_PATH];
  306. GetPrivateProfileString(ThemeMetrics,"Go_BtnPos","",buf,MAX_PATH,strFileName);
  307. m_btnSize = GetSize(buf);
  308. m_btnGo; //查询按钮;
  309. // 3.加载按钮图片;
  310. m_btnGo.LoadBitmap("go.bmp");
  311. // 4.设置按钮的父窗口;
  312. m_btnGo.SetParent(&m_pMainDlg);
  313. // 5.设置按钮位置,其中 Width()=0, Height()=0;
  314. m_btnGo.SetWindowPos(NULL,cx+m_btnSize.cx,m_btnSize.cy,0,0,SWP_NOSIZE);
  315. cx+m_btnSize.cx = 792 - 246 = 546;
  316. m_btnSize.cy = 4;
  317. //-------------------------------------------------------------------------------
  318. // 本例中OnSize的cx=484,cy=462
  319. // cx+m_btnSize.cx = 484 - 246 = 238;
  320. // m_btnSize.cy = 4;
  321. // 6.然后,在OnSize(UINT nType,int cx, int cy)函数中,实时设置按钮位置;
  322. // 以下语句在OnSize里执行,cx与cy是实时改变的父窗口大小;
  323. m_btnGo.SetWindowPos(NULL,cx+m_btnSize.cx ,m_btnSize.cy ,0,0, SWP_NOSIZE);
  324. //-------------------------------------------------------------------------------
  325. */
  326. /************************************************************************/
  327. //MainTitle
  328. m_MainTitle.LoadBitmap(m_strPathName + "\\" +"MainTitle.bmp");
  329. //m_MainTitle.SetExtendPoint(100,0);
  330. m_MainTitle.SetExtendPoint(100,0);
  331. m_MainTitle.SetText("输入:",25,m_NormalText);
  332. m_btnGo.LoadBitmap(m_strPathName + "\\" +"Go.bmp");
  333. m_btnGo.SetParent(&m_MainTitle);
  334. m_btnDropDown.LoadBitmap(m_strPathName + "\\" +"GoDropDown.bmp");
  335. m_btnDropDown.SetParent(&m_MainTitle);
  336. m_btnHelp.LoadBitmap(m_strPathName + "\\" +"HelpMe.bmp");
  337. m_btnHelp.SetParent(&m_MainTitle);
  338. m_btnFore.LoadBitmap(m_strPathName + "\\" +"Foreward.bmp");
  339. m_btnFore.SetParent(&m_MainTitle);
  340. m_btnBack.LoadBitmap(m_strPathName + "\\" +"Backward.bmp");
  341. m_btnBack.SetParent(&m_MainTitle);
  342. m_btnMenu.LoadBitmap(m_strPathName + "\\" +"MENUS.BMP");
  343. m_btnMenu.SetParent(&m_MainTitle);
  344. GetPrivateProfileString(ThemeMetrics,"ButtonGoPos","",buf,MAX_PATH,strFileName);
  345. m_ButtonGoPos=GetSize(buf);
  346. GetPrivateProfileString(ThemeMetrics,"ButtonGoDropDownPos","",buf,MAX_PATH,strFileName);
  347. m_ButtonGoDropDownPos=GetSize(buf);
  348. GetPrivateProfileString(ThemeMetrics,"ButtonHelpMePos","",buf,MAX_PATH,strFileName);
  349. m_ButtonHelpMePos=GetSize(buf);
  350. GetPrivateProfileString(ThemeMetrics,"ButtonBackwardPos","",buf,MAX_PATH,strFileName);
  351. m_ButtonBackwardPos=GetSize(buf);
  352. GetPrivateProfileString(ThemeMetrics,"ButtonForewardPos","",buf,MAX_PATH,strFileName);
  353. m_ButtonForewardPos=GetSize(buf);
  354. GetPrivateProfileString(ThemeMetrics,"ButtonMenusPos","",buf,MAX_PATH,strFileName);
  355. m_ButtonMenusPos=GetSize(buf);
  356. m_btnGo.SetWindowPos(NULL,cx+m_ButtonGoPos.cx ,m_ButtonGoPos.cy ,0,0, SWP_NOSIZE);
  357. m_btnDropDown.SetWindowPos(NULL,cx+m_ButtonGoDropDownPos.cx ,m_ButtonGoDropDownPos.cy ,0,0, SWP_NOSIZE);
  358. m_btnHelp.SetWindowPos(NULL,cx+m_ButtonHelpMePos.cx ,m_ButtonHelpMePos.cy,0,0, SWP_NOSIZE);
  359. m_btnBack.SetWindowPos(NULL,cx+m_ButtonBackwardPos.cx ,m_ButtonBackwardPos.cy,0,0, SWP_NOSIZE);
  360. m_btnFore.SetWindowPos(NULL,cx+m_ButtonForewardPos.cx ,m_ButtonForewardPos.cy,0,0, SWP_NOSIZE);
  361. m_btnMenu.SetWindowPos(NULL,cx+m_ButtonMenusPos.cx ,m_ButtonMenusPos.cy,0,0, SWP_NOSIZE);
  362. m_cbFind.SetParent(&m_MainTitle);
  363. m_cbFind.SetWindowPos(NULL,77 ,5,cx+m_ButtonGoPos.cx-80,15, NULL);
  364. //ToolBar
  365. m_ToolBar.LoadTBImage(IDB_TOOLBAR,RGB(255,0,255));
  366. m_ToolBar.LoadBitmap(m_strPathName + "\\" +"RightTitleBar.bmp");
  367. m_ToolBar.SetExtendPoint(50,0);
  368. m_btnHide.LoadBitmap(m_strPathName + "\\" +"HideLeft.bmp");
  369. m_btnHide.SetParent(&m_ToolBar);
  370. CList<UINT, UINT> lstToolBarCommands;
  371. lstToolBarCommands.AddTail (ID_COPY);
  372. lstToolBarCommands.AddTail (ID_READ);
  373. lstToolBarCommands.AddTail (ID_SAVE);
  374. lstToolBarCommands.AddTail (ID_PRINT);
  375. lstToolBarCommands.AddTail (ID_FIND);
  376. lstToolBarCommands.AddTail (ID_NOTE);
  377. m_ToolBar.SetBasicCommands(lstToolBarCommands);
  378. m_ToolBar.SetTextColor(m_NormalText);
  379. m_ToolBar.SetSizes(CSize(24,24),CSize(16,16));
  380. //View
  381. m_View.LoadBKImage(m_strPathName + "\\" +"ViewBkgrd.bmp");
  382. m_View.SetBorderColor(m_ExplainViewBorder);
  383. //StatusBar
  384. CList<UINT, UINT> lstStatusBarCommands;
  385. lstStatusBarCommands.AddTail (ID_SEARCH);
  386. lstStatusBarCommands.AddTail (ID_SCHEME);
  387. lstStatusBarCommands.AddTail (ID_SETUP);
  388. m_StatusBar.SetBasicCommands(lstStatusBarCommands);
  389. m_StatusBar.LoadBitmap(m_strPathName + "\\" +"StatusBar.bmp");
  390. m_StatusBar.SetExtendPoint(50,0);
  391. m_StatusBar.LoadSBImage(m_strPathName + "\\" +"StatusToolBar.bmp");
  392. GetPrivateProfileString(ThemeColor,"COLOR_FLATBK","",buf,MAX_PATH,strFileName);
  393. m_crFlatBK=GetColor(buf);
  394. GetPrivateProfileString(ThemeColor,"COLOR_FLATHIGHLIGHT","",buf,MAX_PATH,strFileName);
  395. m_crFlatHighLight=GetColor(buf);
  396. GetPrivateProfileString(ThemeColor,"COLOR_HIGHLIGHT","",buf,MAX_PATH,strFileName);
  397. m_crHighLight=GetColor(buf);
  398. GetPrivateProfileString(ThemeColor,"COLOR_FLATGRAY","",buf,MAX_PATH,strFileName);
  399. m_crFlatGray=GetColor(buf);
  400. GetPrivateProfileString(ThemeColor,"COLOR_BTNSHADOW","",buf,MAX_PATH,strFileName);
  401. m_crBtnShadow=GetColor(buf);
  402. GetPrivateProfileString(ThemeColor,"COLOR_FLATHIGHLIGHTTEXT","",buf,MAX_PATH,strFileName);
  403. m_crFlatHighLightText=GetColor(buf);
  404. //更新整个区域
  405. Invalidate();
  406. }
  407. void CDialogDlg::SplitString(char *buf,int nCount,CStringList& strList)
  408. {
  409. char *p1=buf;
  410. for (int i=0;i<nCount;i++)
  411. {
  412. char *p2=p1;
  413. while ((*p1 != ',') && (*p1 != '\0'))
  414. {
  415. p1++;
  416. }
  417. CString str(p2);
  418. str=str.Left(p1-p2) ;
  419. strList.AddTail(str);
  420. p1++;
  421. }
  422. }
  423. CSize CDialogDlg::GetSize(char *buf)
  424. {
  425. CStringList strList;
  426. SplitString(buf,2,strList);
  427. CSize sz;
  428. sz.cx =atoi(strList.GetAt(strList.FindIndex(0) ));
  429. sz.cy =atoi(strList.GetAt(strList.FindIndex(1) ));
  430. return sz;
  431. }
  432. CRect CDialogDlg::GetRect(char *buf)
  433. {
  434. CStringList strList;
  435. SplitString(buf,4,strList);
  436. CRect rc;
  437. rc.left =atoi(strList.GetAt(strList.FindIndex(0) ));
  438. rc.top =atoi(strList.GetAt(strList.FindIndex(1) ));
  439. rc.right =atoi(strList.GetAt(strList.FindIndex(2) ));
  440. rc.bottom =atoi(strList.GetAt(strList.FindIndex(3) ));
  441. return rc;
  442. }
  443. COLORREF CDialogDlg::GetColor(char *buf)
  444. {
  445. CStringList strList;
  446. SplitString(buf,3,strList);
  447. return RGB(atoi(strList.GetAt(strList.FindIndex(0) )),atoi(strList.GetAt(strList.FindIndex(1))),atoi(strList.GetAt(strList.FindIndex(2))));
  448. }
  449. CString CDialogDlg::GetPathName(const char *filename)
  450. {
  451. char path[MAX_PATH];
  452. strcpy( path, filename );
  453. char *p = path + strlen( path );
  454. for ( ; *p != '\\' && *p != '/' && p > path; p-- );
  455. if ( *p == '\\' || *p == '/')
  456. p++;
  457. *p = 0;
  458. return CString(path);
  459. }
  460. void CDialogDlg::OnGetMinMaxInfo(MINMAXINFO FAR* lpMMI)
  461. {
  462. lpMMI->ptMinTrackSize.x=500;
  463. lpMMI->ptMinTrackSize.y=500;
  464. CDialog::OnGetMinMaxInfo(lpMMI);
  465. }
  466. void CDialogDlg::OnScheme()
  467. {
  468. CWnd *pWnd=m_StatusBar.GetDlgItem(ID_SCHEME);
  469. CRect rc;
  470. pWnd->GetWindowRect(&rc);
  471. CSkinMenu m_menu;
  472. m_menu.CreatePopupMenu();
  473. m_menu.AppendMenu(MF_ENABLED |MF_OWNERDRAW,ID_SCHEME_DEFAULT,"默认");
  474. m_menu.AppendMenu(MF_ENABLED |MF_OWNERDRAW,ID_SCHEME_BLUE,"蓝色天空");
  475. m_menu.AppendMenu(MF_ENABLED |MF_OWNERDRAW,ID_SCHEME_SLIVER,"银色");
  476. m_menu.AppendMenu(MF_ENABLED |MF_OWNERDRAW,ID_SCHEME_GREEN,_T("橄榄树"));
  477. //m_menu.ChangeStyle(0);
  478. m_menu.CheckMenuItem(m_nMenuID,MF_BYCOMMAND | MF_CHECKED );
  479. m_menu.SetBKColor(m_crFlatBK,m_crFlatGray);
  480. m_menu.SetHighLightColor(m_crFlatHighLight,m_crHighLight,m_crFlatHighLightText,m_crBtnShadow);
  481. m_menu.TrackPopupMenu(TPM_CENTERALIGN , rc.left ,rc.bottom ,this,CRect(0,0,101,100));
  482. }
  483. void CDialogDlg::OnSchemeBlue()
  484. {
  485. // TODO: Add your command handler code here
  486. LoadSkin("Themes\\BlueTheme\\BlueTheme.ini");
  487. m_nMenuID=ID_SCHEME_BLUE;
  488. }
  489. void CDialogDlg::OnSchemeSliver()
  490. {
  491. // TODO: Add your command handler code here
  492. LoadSkin("Themes\\SilverTheme\\SilverTheme.ini");
  493. m_nMenuID=ID_SCHEME_SLIVER;
  494. }
  495. void CDialogDlg::OnSchemeDefault()
  496. {
  497. // TODO: Add your command handler code here
  498. LoadSkin("Themes\\DefaultTheme\\DefaultTheme.ini");
  499. m_nMenuID=ID_SCHEME_DEFAULT;
  500. }
  501. void CDialogDlg::OnSchemeGreen()
  502. {
  503. // TODO: Add your command handler code here
  504. LoadSkin("Themes\\GreenTheme\\GreenTheme.ini");
  505. m_nMenuID=ID_SCHEME_GREEN;
  506. }
  507. void CDialogDlg::SetViewSize(int cx, int cy)
  508. {
  509. if (m_bShow)
  510. {
  511. m_ToolBar.SetWindowPos(NULL,192,40,cx-192-3,25,NULL);
  512. m_ToolBar.Invalidate();
  513. m_btnHide.SetWindowPos(NULL,0,0,10,10,SWP_NOSIZE);
  514. m_View.SetWindowPos(NULL,192,65,cx-192-4,cy-27-25-40-3, NULL);
  515. m_View.Invalidate();
  516. m_StatusBar.SetWindowPos(NULL,192,cy-27-3,cx-192-3,27, NULL);
  517. m_StatusBar.Invalidate();
  518. }
  519. else
  520. {
  521. m_ToolBar.SetWindowPos(NULL,0,40,cx-3,25,NULL);
  522. m_ToolBar.Invalidate();
  523. m_btnHide.SetWindowPos(NULL,0,0,10,10,SWP_NOSIZE);
  524. m_View.SetWindowPos(NULL,0,65,cx-4,cy-27-25-40-3, NULL);
  525. m_View.Invalidate();
  526. m_StatusBar.SetWindowPos(NULL,0,cy-27-3,cx-3,27, NULL);
  527. m_StatusBar.Invalidate();
  528. }
  529. }
  530. void CDialogDlg::OnBnClickedGo()
  531. {
  532. // TODO: 在此添加控件通知处理程序代码
  533. AfxMessageBox("查询按钮");
  534. }
  535. void CDialogDlg::OnBnClickedMenu()
  536. {
  537. // TODO: 在此添加控件通知处理程序代码
  538. AfxMessageBox("菜单按钮");
  539. }
  540. BOOL CDialogDlg::DestroyWindow()
  541. {
  542. // TODO: 在此添加专用代码和/或调用基类
  543. m_StatusBar.ClearMemory();
  544. m_ToolBar.ClearMemory();
  545. m_Tab.ClearMemory();
  546. return CDialog::DestroyWindow();
  547. }