找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2643|回复: 0
打印 上一主题 下一主题
收起左侧

编程练习作品 -> 字数统计

[复制链接]
跳转到指定楼层
楼主
ID:71922 发表于 2015-1-10 23:33 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 liuyuxi 于 2015-1-11 02:44 编辑

       为朋友设计的一款小程序,核心功能比较简单,就是细节方面比较繁琐。这段时间比较忙,断断续续的写了几天,总算接近尾声了,刚好昨天重装系统,桌面上的其他文件都备份了,唯独这份源码没有备份。在重装系统前,我又格式化了两次C盘... 结果悲剧了....最后用数据恢复软件,总算找回核心代码。花了半天的时间总算恢复完成了...        虽然对于我来说程序没多大作用,但看到朋友那么开心,我也觉得很开心...  设计出让用户满意的程序还真不容易... 核心功能重要,人性化也很重要...



    程序界面:              常规模式:      

                精简模式:

      
     计算模式介绍:

            1、计算当前文本

                   计算当前记事本活动窗口的字数。
            2、计算剪切板
                   计算当前剪切板中的字数。
            3、计算文本文件
                  通过弹出 打开文件 对话框 中获取文件路径,读取该文件并统计。
    (无论在何种模式,只要将纯文本文件拖拽至程序界面 会自动转至 计算文本文件模式,并得到该文件的字数统计结果)      

   

  知识点:

                实现窗体拖拽: 在MFC ClassWizard添加消息响应:WM_DROPPFILES,要先在 Class Info列表中的 Advanced options 下Message filter: 选中 Window 才会有这个消息出现。


                监视剪切板:在 OnInitDialog() 中 添加SetClipboardViewer(); 在MFC ClassWizard 中响应WM_DRAWCLIPBOARD消息。

               

                 设置编辑框字体颜色:响应WM_CTLCOLOR 消息:写入一下代码:
         CBrush m_brush;

if(nCtlColor==CTLCOLOR_EDIT &&  pWnd->GetDlgCtrlID()==IDC_EDIT_SUMTO_JJ)//注意此处的(pWnd->),否则没效果
{
pDC->SetTextColor(RGB(0, 0, 255));    // 设置文本颜色
pDC->SetBkColor(RGB(0,0,0));//设置文本背景色
pDC->SetBkMode(1);//设置背景透明
hbr = (HBRUSH)m_brush;


程序核心源码:
  1. // 字数统计Dlg.cpp : implementation file
  2. #include "stdafx.h"
  3. #include "字数统计.h"
  4. #include "字数统计Dlg.h"
  5. #pragma comment(linker,"/OPT:NOWIN98")
  6. #include <io.h>
  7. #ifdef _DEBUG
  8. #define new DEBUG_NEW
  9. #undef THIS_FILE
  10. static char THIS_FILE[] = __FILE__;
  11. #endif

  12. #define My_CoutMS"计算模式"
  13. #define My_Timerlen"控制计算频率"

  14. #define My_WindowX"窗口X位置"
  15. #define My_WindowY      "窗口Y位置"

  16. #define My_Chinese"中文字数"
  17. #define My_ChineseBD"中文标点"
  18. #define My_English"英文字数"
  19. #define My_EnglishBD"英文标点"

  20. #define My_WindowZD"窗口置顶"

  21. #define YesNo"是否启用"

  22. CMyDlg *This = NULL;

  23. int Timeslen = 100;
  24. BOOL Chineselenbool= TRUE;
  25. BOOL ChineseBDlenbool= FALSE;
  26. BOOL Englishlenbool= TRUE;
  27. BOOL EnglishBDlenbool= FALSE;

  28. double Chineselen = 0;
  29. double Englishlen = 0;
  30. double ChineseBDlen = 0;
  31. double EnglishBDlen = 0;

  32. BOOL SC_MAXIMIZEbool = TRUE;

  33. BOOL ReadJqb= FALSE;  // 剪切板标记

  34. int MyWindowWidth= 0;// 窗体宽度
  35. int MyWindowHeigth= 0;// 窗体高度
  36. int MyKFWindowHeigth = 42;  // 有皮肤时精简模式的高度

  37. typedef int(__stdcall* FunSkinH_AttachEx)( LPCTSTR strSkinFile, LPCTSTR strPassword);
  38. typedef int(__stdcall* FunSkinH_AdjustAero)( int nAlpha, int nShwDark, int nShwSharp, int nShwSize, int nX, int nY, int nRed, int nGreen, int nBlue );
  39. typedef int(__stdcall* FunSkinH_SetMenuAlpha)( int nAlpha );
  40. typedef int(__stdcall* FunSkinH_Map)( HWND hWnd, int nType );
  41. typedef int(__stdcall* FunSkinH_SetForeColor)( HWND hWnd, int nRed, int nGreen, int nBlue );
  42. #define TYPE_PICTURE1018//图片框

  43. /////////////////////////////////////////////////////////////////////////////
  44. // CAboutDlg dialog used for App About

  45. class CAboutDlg : public CDialog
  46. {
  47. public:
  48. CAboutDlg();

  49. // Dialog Data
  50. //{{AFX_DATA(CAboutDlg)
  51. enum { IDD = IDD_ABOUTBOX };
  52. //}}AFX_DATA

  53. // ClassWizard generated virtual function overrides
  54. //{{AFX_VIRTUAL(CAboutDlg)
  55. protected:
  56. virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support
  57. //}}AFX_VIRTUAL

  58. // Implementation
  59. protected:
  60. //{{AFX_MSG(CAboutDlg)
  61. //}}AFX_MSG
  62. DECLARE_MESSAGE_MAP()
  63. };

  64. CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
  65. {
  66. //{{AFX_DATA_INIT(CAboutDlg)
  67. //}}AFX_DATA_INIT
  68. }

  69. void CAboutDlg::DoDataExchange(CDataExchange* pDX)
  70. {
  71. CDialog::DoDataExchange(pDX);
  72. //{{AFX_DATA_MAP(CAboutDlg)
  73. //}}AFX_DATA_MAP
  74. }

  75. BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
  76. //{{AFX_MSG_MAP(CAboutDlg)
  77. // No message handlers
  78. //}}AFX_MSG_MAP
  79. END_MESSAGE_MAP()

  80. /////////////////////////////////////////////////////////////////////////////
  81. // CMyDlg dialog

  82. CMyDlg::CMyDlg(CWnd* pParent /*=NULL*/)
  83. : CDialog(CMyDlg::IDD, pParent)
  84. {
  85. //{{AFX_DATA_INIT(CMyDlg)
  86. // NOTE: the ClassWizard will add member initialization here
  87. //}}AFX_DATA_INIT
  88. // Note that LoadIcon does not require a subsequent DestroyIcon in Win32
  89. m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
  90. This = this;
  91. }

  92. void CMyDlg::DoDataExchange(CDataExchange* pDX)
  93. {
  94. CDialog::DoDataExchange(pDX);
  95. //{{AFX_DATA_MAP(CMyDlg)
  96. // NOTE: the ClassWizard will add DDX and DDV calls here
  97. //}}AFX_DATA_MAP
  98. }

  99. BEGIN_MESSAGE_MAP(CMyDlg, CDialog)
  100. //{{AFX_MSG_MAP(CMyDlg)
  101. ON_WM_SYSCOMMAND()
  102. ON_WM_PAINT()
  103. ON_WM_QUERYDRAGICON()
  104. ON_BN_CLICKED(IDC_CHECK_Sumrate, OnCHECKSumrate)
  105. ON_EN_CHANGE(IDC_EDIT_Timerlen, OnChangeEDITTimerlen)
  106. ON_BN_CLICKED(IDC_CHECK_Chinese, OnCHECKChinese)
  107. ON_BN_CLICKED(IDC_CHECK_ChineseBD, OnCHECKChineseBD)
  108. ON_BN_CLICKED(IDC_CHECK_English, OnCHECKEnglish)
  109. ON_BN_CLICKED(IDC_CHECK_EnglishBD, OnCHECKEnglishBD)
  110. ON_BN_CLICKED(IDC_RADIO_TOP, OnRadioTop)
  111. ON_BN_CLICKED(IDC_RADIO_NOTOP, OnRadioNotop)
  112. ON_CBN_SELCHANGE(IDC_COMBO_CoutMS, OnSelchangeCOMBOCoutMS)
  113. ON_WM_DRAWCLIPBOARD()
  114. ON_WM_MOVE()
  115. ON_WM_DROPFILES()
  116. ON_WM_CTLCOLOR()
  117. ON_BN_CLICKED(IDC_JingJianMS, OnJingJianMS)
  118. //}}AFX_MSG_MAP
  119. END_MESSAGE_MAP()

  120. /////////////////////////////////////////////////////////////////////////////
  121. // CMyDlg message handlers
  122. /*********************************************************************************
  123. * 功能:把相关配置信息读、写到注册表
  124. * 参数:ReadWrite:读、写(Read、Write)RWWeiZhi:读写位置
  125. *Title:注册表键名 InOutTEXT:输入输出数据   
  126. * 返回值:读取成功返回 TRUE 将结果复制到InOutTEXT 失败返回 FALSE 原因复制到InOutTEXT                                                               
  127. **********************************************************************************/
  128. BOOL MyRegedit(char ReadWrite[], char RWWeiZhi[], char Title[], char InOutTEXT[])
  129. {
  130. char KeyName[MAX_PATH] = {0};// 键值名
  131. char Tmp[MAX_PATH] = {0};// 临时变量
  132. HKEY RegKey;// 注册表句柄
  133. DWORD type, size = MAX_PATH;

  134. sprintf(KeyName, "字数统计\\%s", RWWeiZhi);

  135. // 读取数据
  136. if (strcmp(ReadWrite, "Read") == 0)
  137. {
  138. if(RegOpenKeyEx(HKEY_CURRENT_USER, KeyName, 0, KEY_ALL_ACCESS, &RegKey) == ERROR_SUCCESS)
  139. {
  140. if (RegQueryValueEx(RegKey, Title, 0, &type, (unsigned char*)Tmp, &size) == ERROR_SUCCESS)
  141. {
  142. RegCloseKey(RegKey);
  143. strcpy(InOutTEXT, Tmp);// 将结果复制到 InOutTEXT
  144. return TRUE;
  145. }
  146. else
  147. {
  148. RegCloseKey(RegKey);
  149. strcpy(InOutTEXT, "查询注册表失败");// 将原因复制到 InOutTEXT
  150. return FALSE;
  151. }
  152. }
  153. else
  154. {
  155. strcpy(InOutTEXT, "打开注册表失败");
  156. return FALSE;
  157. }
  158. }

  159. // 写数据
  160. if (strcmp(ReadWrite, "Write") == 0)
  161. {
  162. // 打开注册表
  163. if(RegCreateKeyEx(HKEY_CURRENT_USER, KeyName, 0, NULL, REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, NULL, &RegKey, &type) == ERROR_SUCCESS)
  164. {
  165. //const char* res=md5(InOutTEXT);// 加密
  166. if(RegSetValueEx(RegKey, Title, 0, REG_SZ, (unsigned char*)InOutTEXT, strlen(InOutTEXT)) == ERROR_SUCCESS)
  167. {
  168. RegCloseKey(RegKey);
  169. strcpy(InOutTEXT, "写入信息成功");// 将结果复制到 InOutTEXT
  170. return TRUE;
  171. }
  172. else
  173. {
  174. RegCloseKey(RegKey);
  175. strcpy(InOutTEXT, "写入信息失败");// 将结果复制到 InOutTEXT
  176. return FALSE;
  177. }
  178. }
  179. else
  180. {
  181. strcpy(InOutTEXT, "打开或创建注册表失败");// 将结果复制到 InOutTEXT
  182. return FALSE;
  183. }
  184. }

  185. strcpy(InOutTEXT, "输入的参数错误");
  186. return FALSE;
  187. }

  188. /********************************************************/
  189. //  读取剪切板数据
  190. /********************************************************/
  191. char* Rjqb(int *Datelen)
  192. {
  193. if (OpenClipboard(NULL))  // 打开剪切板
  194. {
  195. if (IsClipboardFormatAvailable(CF_TEXT)) // 检测剪切板是否有指定类型的剪切板数据
  196. {
  197. HANDLE hClip;
  198. char *pBuf;
  199. hClip = GetClipboardData(CF_TEXT);  // 获取指定类型的剪切板数据
  200. pBuf = (char *)GlobalLock(hClip); // 加锁
  201. *Datelen =  strlen(pBuf);
  202. GlobalUnlock(hClip);// 解锁
  203. CloseClipboard(); // 关闭剪切板

  204. return pBuf;
  205. }
  206. else
  207. CloseClipboard(); // 关闭剪切板
  208. }
  209. return NULL;
  210. }

  211. void ShowJG(double Sum, char OutJg[])
  212. {

  213. int Sumlen = 0;
  214. char Temp[MAX_PATH*100] = {0};
  215. char JieGuo[MAX_PATH*100] = {0};

  216. sprintf(Temp,"%.3080f", Sum);
  217. Sumlen = strlen(Temp)-1;
  218. while(Temp[Sumlen--] == '0');
  219. Temp[Sumlen+1] = '\0';

  220. Sumlen = strlen(Temp)-1;
  221. int JieGuoSy=0, TempSy=0, k=0;

  222. for (; Sumlen>=0; Sumlen--,k++,TempSy++,JieGuoSy++)
  223. {
  224. if (k==4)
  225. {
  226. k=0;
  227. JieGuo[JieGuoSy] = ',';
  228. JieGuoSy++;
  229. }
  230. JieGuo[JieGuoSy] = Temp[Sumlen];
  231. }
  232. JieGuo[JieGuoSy] = '\0';
  233. strrev(JieGuo);
  234. strcpy(OutJg, JieGuo);
  235. }


  236. void SunJG(char *Tmp, BOOL Cout)
  237. {  
  238. double Sum = 0;

  239. /*double Chineselen = 0;
  240. double Englishlen = 0;
  241. double ChineseBDlen = 0;
  242. double EnglishBDlen = 0;*/
  243. char Temp[MAX_PATH*100] = {0};


  244. if (Cout)// 这是计算文本的模式 否则就只是单单相加计算而已
  245. {
  246. Chineselen = 0;
  247. Englishlen = 0;
  248. ChineseBDlen = 0;
  249. EnglishBDlen = 0;


  250. while(*Tmp)
  251. {
  252. if(*Tmp<0)
  253. {
  254. if ((*Tmp&0xFF)>=0xB0 && (*Tmp&0xFF) <= 0xF7)
  255. {
  256. Chineselen++;
  257. }
  258. else
  259. {
  260. ChineseBDlen++;
  261. }
  262. *Tmp++;
  263. *Tmp++;
  264. }
  265. else
  266. {
  267. if ( *Tmp>=32 && *Tmp<=47 || *Tmp>=58 && *Tmp<=64 || *Tmp>=91 && *Tmp<=96 || *Tmp>=123 && *Tmp<=126 || *Tmp == 13 )
  268. {
  269. EnglishBDlen++;
  270. if(*Tmp == 13)
  271. Englishlen--;
  272. }
  273. else
  274. Englishlen++;
  275. *Tmp++;
  276. }
  277. }
  278. }

  279. /*sprintf(Temp,"%.3080f",Chineselen);
  280. int i = strlen(Temp)-1;
  281. while(Temp[i--] == '0');
  282. Temp[i+1] = 0;
  283. This->SetDlgItemText(IDC_EDIT_Chinese, Temp);

  284. sprintf(Temp,"%.3080f",Englishlen);
  285. i = strlen(Temp)-1;
  286. while(Temp[i--] == '0');
  287. Temp[i+1] = 0;
  288. This->SetDlgItemText(IDC_EDIT_English, Temp);

  289. sprintf(Temp,"%.3080f",ChineseBDlen);
  290. i = strlen(Temp)-1;
  291. while(Temp[i--] == '0');
  292. Temp[i+1] = 0;
  293. This->SetDlgItemText(IDC_EDIT_ChineseBD, Temp);

  294. sprintf(Temp,"%.3080f",EnglishBDlen);
  295. i = strlen(Temp)-1;
  296. while(Temp[i--] == '0');
  297. Temp[i+1] = 0;
  298. This->SetDlgItemText(IDC_EDIT_EnglishBD, Temp);
  299. */

  300. if(Chineselenbool)
  301. Sum += Chineselen;
  302. if(ChineseBDlenbool)
  303. Sum += ChineseBDlen;

  304. if(Englishlenbool)
  305. Sum += Englishlen;
  306. if (EnglishBDlenbool)
  307. Sum += EnglishBDlen;

  308. /*sprintf(Temp,"%.3080f",Sum);
  309. i = strlen(Temp)-1;
  310. while(Temp[i--] == '0');
  311. Temp[i+1] = 0;*/

  312. memset(Temp, 0, MAX_PATH+100);
  313. ShowJG(Chineselen, Temp);
  314. This->SetDlgItemText(IDC_EDIT_Chinese, Temp);

  315. memset(Temp, 0, MAX_PATH+100);
  316. ShowJG(ChineseBDlen, Temp);
  317. This->SetDlgItemText(IDC_EDIT_ChineseBD, Temp);

  318. memset(Temp, 0, MAX_PATH+100);
  319. ShowJG(Englishlen, Temp);
  320. This->SetDlgItemText(IDC_EDIT_English, Temp);

  321. memset(Temp, 0, MAX_PATH+100);
  322. ShowJG(EnglishBDlen, Temp);
  323. This->SetDlgItemText(IDC_EDIT_EnglishBD, Temp);

  324. memset(Temp, 0, MAX_PATH+100);
  325. ShowJG(Sum, Temp);
  326. This->SetDlgItemText(IDC_EDIT_SUMTO, Temp);
  327. This->SetDlgItemText(IDC_EDIT_SUMTO_JJ, Temp);

  328. }

  329. void CALLBACK ScanDangQText(HWND hWnd,UINT nMsg,UINT nTimerid,DWORD dwTime)
  330. {
  331. char WindowsText[MAX_PATH] = {0};
  332. HWND DangQWindowhWnd = GetForegroundWindow();
  333. HWND EdithWnd = NULL;
  334. DWORD Textlen = 0;

  335. GetWindowText(DangQWindowhWnd, WindowsText, MAX_PATH);

  336. if (strstr(WindowsText, " - 记事本"))// 从当前窗口标题中寻找 - 记事本 字符串
  337. {
  338. EdithWnd = ::FindWindowEx(DangQWindowhWnd, NULL, "Edit", NULL);
  339. Textlen =::SendMessage(EdithWnd, WM_GETTEXTLENGTH,  (WPARAM)0, (LPARAM)0) + 1;
  340. char *Tmp = new char[Textlen+1];

  341. SendMessage(EdithWnd, WM_GETTEXT, Textlen, (LPARAM)Tmp);
  342. Tmp[Textlen] = '\0';// 这里一定要结尾 不然会出现乱码

  343. This->SetDlgItemText(IDC_STATIC_ZT,  WindowsText);
  344. SunJG(Tmp, TRUE);

  345. if(Tmp)
  346. delete []Tmp;
  347. }
  348. }

  349. void MyWindowMS(BOOL MIZ)
  350. {
  351. char Tmp[20] = {0};
  352. int x=0, y=0;
  353. MyRegedit("Read", My_WindowX, My_WindowX, Tmp);
  354. x = atoi(Tmp);
  355. MyRegedit("Read", My_WindowY, My_WindowY, Tmp);
  356. y = atoi(Tmp);

  357. if (MIZ)// 精简模式
  358. {
  359. if (MyKFWindowHeigth == 42)
  360. x += 105;
  361. else
  362. x += 115;

  363. MoveWindow(This->m_hWnd, x, y, 129, MyKFWindowHeigth, TRUE);
  364. ::SetWindowPos(This->m_hWnd,HWND_TOPMOST,0,0,0,0,SWP_NOMOVE|SWP_NOSIZE);
  365. ShowWindow(GetDlgItem(This->m_hWnd, IDC_EDIT_SUMTO_JJ), TRUE);
  366. MoveWindow(GetDlgItem(This->m_hWnd, IDC_EDIT_SUMTO_JJ), -6, NULL, 129, 20, TRUE);
  367. ShowWindow(GetDlgItem(This->m_hWnd, IDC_STATIC2), FALSE);
  368. //strcpy(Tmp, "Yes");
  369. }
  370. else// 还原模式
  371. {
  372. MoveWindow(This->m_hWnd, x, y, MyWindowWidth, MyWindowHeigth, TRUE);
  373. ShowWindow(GetDlgItem(This->m_hWnd, IDC_STATIC2), TRUE);
  374. ShowWindow(GetDlgItem(This->m_hWnd, IDC_EDIT_SUMTO_JJ), FALSE);

  375. if (BST_CHECKED != SendDlgItemMessage(This->m_hWnd, IDC_RADIO_TOP, BM_GETCHECK, 0, 0))
  376. ::SetWindowPos(This->m_hWnd,HWND_NOTOPMOST,0,0,0,0,SWP_NOMOVE|SWP_NOSIZE);
  377. //strcpy(Tmp, "No");
  378. }
  379. }

  380. // 打开文件并且统计字数
  381. void OpenFile(char FilePath[])
  382. {
  383. DWORD FileSize = 0;
  384. DWORD Size = 0;
  385. HANDLE FileHandle = NULL;
  386. char Tmp[MAX_PATH] = {0};

  387. strrev(FilePath);
  388. Size = strchr(FilePath, '.') - FilePath + 1;
  389. memcpy(Tmp, FilePath, Size);
  390. strrev(Tmp);

  391. if (strcmpi(Tmp, ".txt") != 0 && strcmpi(Tmp, ".cpp") != 0 && strcmpi(Tmp, ".c") != 0 && strcmpi(Tmp, ".h") != 0 && strcmpi(Tmp, ".asm") != 0)
  392. {
  393. if (IDNO == MessageBox(NULL, "该文件可能不是纯文本格式,是否继续分析?", "提示", MB_ICONQUESTION|MB_YESNO|MB_SYSTEMMODAL))
  394. return ;
  395. }

  396. Size = strchr(FilePath, '\\') - FilePath ;
  397. memcpy(Tmp, FilePath, Size);
  398. strrev(Tmp);
  399. strrev(FilePath);
  400. This->SetDlgItemText(IDC_STATIC_ZT, Tmp);

  401. FileHandle = CreateFile( FilePath, GENERIC_READ, FILE_SHARE_READ ,NULL, OPEN_EXISTING, NULL, NULL);
  402. if (FileHandle == NULL)
  403. return;
  404. FileSize = GetFileSize(FileHandle,NULL);

  405. if ( INVALID_FILE_SIZE == FileSize )
  406. {
  407. This->SetDlgItemText(IDC_STATIC_ZT, "无法获取文件大小");
  408. CloseHandle(FileHandle);
  409. return;
  410. }
  411. if (FileSize == 0)
  412. {
  413. CloseHandle(FileHandle);
  414. This->SetDlgItemText(IDC_EDIT_Chinese, "0");
  415. This->SetDlgItemText(IDC_EDIT_ChineseBD, "0");
  416. This->SetDlgItemText(IDC_EDIT_English, "0");
  417. This->SetDlgItemText(IDC_EDIT_EnglishBD, "0");
  418. This->SetDlgItemText(IDC_EDIT_SUMTO, "0");
  419. This->SetDlgItemText(IDC_EDIT_SUMTO_JJ, "0");
  420. return ;
  421. }
  422. char *RBuf = new char[FileSize+1];
  423. memset(RBuf,0, FileSize);
  424. if (ReadFile(FileHandle, RBuf, FileSize, &Size,NULL))
  425. {
  426. if (RBuf[0] == -1)
  427. {
  428. This->SetDlgItemText(IDC_EDIT_Chinese, "0");
  429. This->SetDlgItemText(IDC_EDIT_ChineseBD, "0");
  430. This->SetDlgItemText(IDC_EDIT_English, "0");
  431. This->SetDlgItemText(IDC_EDIT_EnglishBD, "0");
  432. This->SetDlgItemText(IDC_EDIT_SUMTO, "0");
  433. This->SetDlgItemText(IDC_EDIT_SUMTO_JJ, "0");

  434. This->SetDlgItemText(IDC_STATIC_ZT, "暂不支持非 ANSI 编码文件!");
  435. CloseHandle(FileHandle);
  436. return;
  437. }
  438. RBuf[FileSize] = '\0';
  439. }
  440. else
  441. {
  442. This->SetDlgItemText(IDC_STATIC_ZT, "读取文件失败~");
  443. CloseHandle(FileHandle);
  444. return;
  445. }

  446. CloseHandle(FileHandle);
  447. //((CComboBox*)GetDlgItem(IDC_COMBO_CoutMS))->SetCurSel(2);//设置第n行内容为显示的内容。
  448. SunJG(RBuf, TRUE);
  449. if (RBuf)
  450. delete []RBuf;
  451. }

  452. BOOL NewZiYuan(char SK[], char SF[])
  453. {
  454. // 如果 dll不存在
  455. if (_access(SK, 0) == -1)
  456. {
  457. char a[98277] = {0};
  458. HRSRC hRc=FindResource(NULL,"SK","tmp");
  459. if(!hRc)return FALSE;

  460. HGLOBAL hg=LoadResource(NULL,hRc);  // 将资源载入内存并返回其在内存中首地址保存在hg中
  461. DWORD dw=SizeofResource(NULL,hRc);  // 获得资源大小并用dw保存资源大小
  462. memset(a,0,sizeof(a));
  463. memcpy(a,hg,dw);

  464. FILE *out=fopen(SK, "wb+");
  465. fwrite(a,1,dw,out);
  466. fclose(out);
  467. }

  468. if (_access(SF, 0) == -1)
  469. {
  470. char b[30422] = {0};
  471. HRSRC hRc1=FindResource(NULL,"SF","tmp");
  472. if(!hRc1)return FALSE;

  473. HGLOBAL hg=LoadResource(NULL,hRc1);
  474. DWORD dw=SizeofResource(NULL,hRc1);
  475. memset(b,0,sizeof(b));
  476. memcpy(b,hg,dw);

  477. FILE *out=fopen(SF, "wb+");
  478. fwrite(b,1,dw,out);
  479. fclose(out);
  480. }

  481. return TRUE;
  482. }

  483. BOOL CMyDlg::OnInitDialog()
  484. {
  485. CDialog::OnInitDialog();
  486. ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
  487. ASSERT(IDM_ABOUTBOX < 0xF000);
  488. /*CMenu* pSysMenu = GetSystemMenu(FALSE);
  489. if (pSysMenu != NULL)
  490. {
  491. CString strAboutMenu;
  492. strAboutMenu.LoadString(IDS_ABOUTBOX);
  493. if (!strAboutMenu.IsEmpty())
  494. {
  495. pSysMenu->AppendMenu(MF_SEPARATOR);
  496. pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
  497. }
  498. }
  499. */
  500. SetIcon(m_hIcon, TRUE);// Set big icon
  501. SetIcon(m_hIcon, FALSE);// Set small icon

  502. char Tmp[100] = {0};
  503. char Temp[100] = {0};
  504. DWORD dwSize=100;
  505. GetTempPath(dwSize, Tmp);//获取临时文件夹路径
  506. strcpy(Temp, Tmp);
  507. strcat(Tmp, "Sk.tmp");
  508. strcat(Temp, "Sf.tmp");

  509. // 读取自身资源文件 释放皮肤文件
  510. if (NewZiYuan(Tmp, Temp))
  511. {
  512. // 加载皮肤
  513. HINSTANCE hInstance = NULL;
  514. hInstance = ::LoadLibrary(Tmp);
  515. if (hInstance)
  516. {
  517. FunSkinH_AttachEx  SkinH_AttachEx = (FunSkinH_AttachEx)GetProcAddress(hInstance, "SkinH_AttachEx");
  518. FunSkinH_AdjustAero SkinH_AdjustAero = (FunSkinH_AdjustAero)GetProcAddress(hInstance, "SkinH_AdjustAero");
  519. FunSkinH_SetMenuAlpha SkinH_SetMenuAlpha = (FunSkinH_SetMenuAlpha)GetProcAddress(hInstance, "SkinH_SetMenuAlpha");
  520. FunSkinH_Map SkinH_Map = (FunSkinH_Map)GetProcAddress(hInstance, "SkinH_Map");
  521. FunSkinH_SetForeColor SkinH_SetForeColor = (FunSkinH_SetForeColor)GetProcAddress(hInstance, "SkinH_SetForeColor");
  522. if (!SkinH_AttachEx(Temp, NULL))
  523. {
  524. SkinH_AdjustAero(
  525. 180,//透明度,   0-255, 默认值0
  526. 0,//亮度,     0-255, 默认值0
  527. 15,//锐度,    0-255, 默认值0
  528. 0,//阴影大小, 2-19,  默认值2
  529. 0,//水平偏移, 0-25,  默认值0 (目前不支持)
  530. 0,//垂直偏移, 0-25,  默认值0 (目前不支持)
  531. 0,//红色分量, 0-255, 默认值 -1
  532. 0,//绿色分量, 0-255, 默认值 -1
  533. 0);//蓝色分量, 0-255, 默认值 -1

  534. SkinH_SetMenuAlpha(190);
  535. SkinH_Map( GetDlgItem(IDC_STATIC1)->m_hWnd, TYPE_PICTURE);
  536. SkinH_Map( GetDlgItem(IDC_STATIC2)->m_hWnd, TYPE_PICTURE);
  537. SkinH_Map( GetDlgItem(IDC_STATIC3)->m_hWnd, TYPE_PICTURE);
  538. SkinH_SetForeColor(GetDlgItem(IDC_RADIO_NOTOP)->m_hWnd, 0, 0, 255);
  539. SkinH_SetForeColor(GetDlgItem(IDC_RADIO_TOP)->m_hWnd, 0, 0, 255);

  540. MyKFWindowHeigth = 55;
  541. }
  542. else
  543. AfxMessageBox("加载皮肤失败 ~");
  544. }
  545. else
  546. AfxMessageBox("加载皮肤 dll 失败 ~");
  547. }
  548. else
  549. AfxMessageBox(" 读取自身资源文件失败 ~");

  550. ((CComboBox*)GetDlgItem(IDC_COMBO_CoutMS))->SetCurSel(0);//设置第n行内容为显示的内容。

  551. //SetDlgItemText(IDC_EDIT_Timerlen, "0.1");

  552. SetDlgItemText(IDC_EDIT_Chinese, "0");
  553. SetDlgItemText(IDC_EDIT_ChineseBD, "0");
  554. SetDlgItemText(IDC_EDIT_English, "0");
  555. SetDlgItemText(IDC_EDIT_EnglishBD, "0");
  556. SetDlgItemText(IDC_EDIT_SUMTO, "0");
  557. SetDlgItemText(IDC_EDIT_SUMTO_JJ, "0");

  558. ((CButton *)GetDlgItem (IDC_RADIO_TOP))->SetCheck(TRUE);
  559. ((CButton *)GetDlgItem (IDC_CHECK_Chinese))->SetCheck(TRUE);
  560. ((CButton *)GetDlgItem (IDC_CHECK_English))->SetCheck(TRUE);

  561. ::SetWindowPos(m_hWnd,HWND_TOPMOST,0,0,0,0,SWP_NOMOVE|SWP_NOSIZE);

  562. SetClipboardViewer();// 监视剪切板


  563. // 检查记录 恢复关闭前设置

  564. int x=0, y=0;
  565. WPARAM wParam;

  566. CRect rect;
  567. GetWindowRect(&rect);

  568. MyWindowWidth = rect.Width();
  569. MyWindowHeigth = rect.Height();

  570. MyRegedit("Read", My_WindowX, My_WindowX, Tmp);
  571. x = atoi(Tmp);
  572. MyRegedit("Read", My_WindowY, My_WindowY, Tmp);
  573. y = atoi(Tmp);
  574. if (x>0 && y>0)
  575. MoveWindow( x, y, MyWindowWidth, MyWindowHeigth, TRUE);

  576. MyRegedit("Read", My_CoutMS, My_CoutMS, Tmp);
  577. x = atoi(Tmp);
  578. if (x<0)x = 0;
  579. ((CComboBox*)GetDlgItem(IDC_COMBO_CoutMS))->SetCurSel(x);//设置第n行内容为显示的内容。
  580. wParam = MAKEWPARAM( IDC_COMBO_CoutMS, CBN_SELCHANGE );// 触发事件
  581. SendMessage( WM_COMMAND, wParam, (LPARAM)( ( (CComboBox*) GetDlgItem(IDC_COMBO_CoutMS)) -> m_hWnd ));

  582. MyRegedit("Read", My_Timerlen, My_Timerlen, Tmp);
  583. SetDlgItemText(IDC_EDIT_Timerlen, Tmp);
  584. KillTimer(0);
  585. SetTimer(0, 100, ScanDangQText);

  586. MyRegedit("Read", My_Chinese, YesNo, Tmp);
  587. if(strcmp(Tmp, "Yes") == 0)
  588. {
  589. Chineselenbool = TRUE;
  590. ((CButton *)GetDlgItem (IDC_CHECK_Chinese))->SetCheck(TRUE);
  591. }
  592. else
  593. {
  594. if (strcmp(Tmp, "No") == 0)
  595. ((CButton *)GetDlgItem (IDC_CHECK_Chinese))->SetCheck(FALSE);
  596. }

  597. MyRegedit("Read", My_ChineseBD, YesNo, Tmp);
  598. if(strcmp(Tmp, "Yes") == 0)
  599. {
  600. ChineseBDlenbool = TRUE;
  601. ((CButton *)GetDlgItem (IDC_CHECK_ChineseBD))->SetCheck(TRUE);
  602. }
  603. else
  604. ((CButton *)GetDlgItem (IDC_CHECK_ChineseBD))->SetCheck(FALSE);

  605. MyRegedit("Read", My_English, YesNo, Tmp);
  606. if(strcmp(Tmp, "Yes") == 0)
  607. {
  608. Englishlenbool = TRUE;
  609. ((CButton *)GetDlgItem (IDC_CHECK_English))->SetCheck(TRUE);
  610. }
  611. else
  612. {
  613. if (strcmp(Tmp, "No") == 0)
  614. ((CButton *)GetDlgItem (IDC_CHECK_English))->SetCheck(FALSE);
  615. }

  616. MyRegedit("Read", My_EnglishBD, YesNo, Tmp);
  617. if(strcmp(Tmp, "Yes") == 0)
  618. {
  619. EnglishBDlenbool = TRUE;
  620. ((CButton *)GetDlgItem (IDC_CHECK_EnglishBD))->SetCheck(TRUE);
  621. }
  622. else
  623. ((CButton *)GetDlgItem (IDC_CHECK_EnglishBD))->SetCheck(FALSE);

  624. SunJG(NULL, FALSE);

  625. MyRegedit("Read", My_WindowZD, YesNo, Tmp);
  626. if(strcmp(Tmp, "Yes") == 0)
  627. {
  628. ::SetWindowPos(m_hWnd,HWND_TOPMOST,0,0,0,0,SWP_NOMOVE|SWP_NOSIZE);
  629. ((CButton *)GetDlgItem (IDC_RADIO_TOP))->SetCheck(TRUE);
  630. }
  631. else
  632. {
  633. if (strcmp(Tmp, "No") == 0)
  634. {
  635. ::SetWindowPos(m_hWnd,HWND_NOTOPMOST,0,0,0,0,SWP_NOMOVE|SWP_NOSIZE);
  636. ((CButton *)GetDlgItem (IDC_RADIO_TOP))->SetCheck(FALSE);
  637. ((CButton *)GetDlgItem (IDC_RADIO_NOTOP))->SetCheck(TRUE);
  638. }
  639. }

  640. SetDlgItemText(IDC_STATIC_ZT, "【拖拽txt文件到界面也可得到结果】");

  641. return TRUE;  // return TRUE  unless you set the focus to a control
  642. }

  643. void CMyDlg::OnSysCommand(UINT nID, LPARAM lParam)
  644. {
  645. if ((nID & 0xFFF0) == IDM_ABOUTBOX)
  646. {
  647. CAboutDlg dlgAbout;
  648. dlgAbout.DoModal();
  649. }
  650. else if ((nID & 0xFFF0) == SC_MAXIMIZE)
  651. {
  652. if (SC_MAXIMIZEbool)
  653. {
  654. SC_MAXIMIZEbool = FALSE;
  655. MyWindowMS(TRUE);

  656. }
  657. else
  658. {
  659. //AfxMessageBox("退出模式");
  660. SC_MAXIMIZEbool = TRUE;
  661. MyWindowMS(FALSE);
  662. }
  663. }
  664. else
  665. {
  666. CDialog::OnSysCommand(nID, lParam);
  667. }
  668. }
  669. // If you add a minimize button to your dialog, you will need the code below
  670. //  to draw the icon.  For MFC applications using the document/view model,
  671. //  this is automatically done for you by the framework.

  672. void CMyDlg::OnPaint()
  673. {
  674. if (IsIconic())
  675. {
  676. CPaintDC dc(this); // device context for painting

  677. SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);

  678. // Center icon in client rectangle
  679. int cxIcon = GetSystemMetrics(SM_CXICON);
  680. int cyIcon = GetSystemMetrics(SM_CYICON);
  681. CRect rect;
  682. GetClientRect(&rect);
  683. int x = (rect.Width() - cxIcon + 1) / 2;
  684. int y = (rect.Height() - cyIcon + 1) / 2;

  685. // Draw the icon
  686. dc.DrawIcon(x, y, m_hIcon);
  687. }
  688. else
  689. {
  690. CDialog::OnPaint();
  691. }
  692. }

  693. // The system calls this to obtain the cursor to display while the user drags
  694. //  the minimized window.
  695. HCURSOR CMyDlg::OnQueryDragIcon()
  696. {
  697. return (HCURSOR) m_hIcon;
  698. }

  699. void CMyDlg::OnCHECKSumrate()
  700. {
  701. // TODO: Add your control notification handler code here
  702. KillTimer(0);// 一定要先结束这些定时器 不然会很占系统资源
  703. //KillTimer(1);
  704. ReadJqb = FALSE;

  705. CButton    *SumRate; // 定义对象
  706. SumRate =    (CButton    *)GetDlgItem(IDC_CHECK_Sumrate);

  707. char Tmp[20] = {0};

  708. if (SumRate->GetCheck()) // 设置计算频率
  709. {
  710. MyRegedit("Read", My_Timerlen, My_Timerlen, Tmp);
  711. SetDlgItemText(IDC_EDIT_Timerlen, Tmp);
  712. GetDlgItem(IDC_EDIT_Timerlen)->EnableWindow(1);
  713. }
  714. else// 默认计算频率
  715. {
  716. Timeslen = 100;
  717. GetDlgItem(IDC_EDIT_Timerlen)->EnableWindow(0);
  718. }

  719. int iPos=((CComboBox*)GetDlgItem(IDC_COMBO_CoutMS))->GetCurSel();
  720. if (iPos == 0)
  721. SetTimer(0, Timeslen, ScanDangQText);

  722. if (iPos == 1)
  723. ReadJqb = TRUE;
  724. //SetTimer(1, Timeslen, ScanJqb);
  725. }

  726. void CMyDlg::OnChangeEDITTimerlen()
  727. {
  728. KillTimer(0);// 一定要先结束这些定时器 不然会很占系统资源
  729. //KillTimer(1);

  730. /*BOOL flag;
  731. Timeslen = GetDlgItemInt(IDC_EDIT_Timerlen, &flag, true);*/
  732. char Time[MAX_PATH] = {0};

  733. GetDlgItemText(IDC_EDIT_Timerlen, Time, MAX_PATH);

  734. Timeslen = (int)atof(Time)*1000;

  735. if (atof(Time)*1000 >=100 )
  736. {
  737. MyRegedit("Write", My_Timerlen, My_Timerlen, Time);
  738. int iPos=((CComboBox*)GetDlgItem(IDC_COMBO_CoutMS))->GetCurSel();
  739. if (iPos == 0)
  740. SetTimer(0, Timeslen, ScanDangQText);

  741. if (iPos == 1)
  742. ReadJqb = TRUE;
  743. //SetTimer(1, Timeslen, ScanJqb);

  744. SetDlgItemText(IDC_STATIC_ZT, "更改计算频率生效");
  745. }
  746. else
  747. {
  748. SetDlgItemText(IDC_EDIT_Timerlen, "0.1");
  749. SetDlgItemText(IDC_STATIC_ZT, "计算频率不允许低于0.1");
  750. }
  751. }

  752. void CMyDlg::OnCHECKChinese()
  753. {
  754. CButton    *SumRate; // 定义对象
  755. SumRate =    (CButton    *)GetDlgItem(IDC_CHECK_Chinese);

  756. char Tmp[20] = {0};

  757. if (SumRate->GetCheck())
  758. {
  759. strcpy(Tmp, "Yes");
  760. Chineselenbool = TRUE;
  761. }
  762. else
  763. {
  764. strcpy(Tmp, "No");
  765. Chineselenbool = FALSE;
  766. }
  767. MyRegedit("Write", My_Chinese, YesNo, Tmp);

  768. SunJG(NULL, FALSE);// 在原有的数据重新相加
  769. }

  770. void CMyDlg::OnCHECKChineseBD()
  771. {
  772. CButton    *SumRate; // 定义对象
  773. SumRate =    (CButton    *)GetDlgItem(IDC_CHECK_ChineseBD);

  774. char Tmp[20] = {0};
  775. if (SumRate->GetCheck())
  776. {
  777. strcpy(Tmp, "Yes");
  778. ChineseBDlenbool = TRUE;
  779. }
  780. else
  781. {
  782. strcpy(Tmp, "No");
  783. ChineseBDlenbool = FALSE;
  784. }

  785. MyRegedit("Write", My_ChineseBD, YesNo, Tmp);
  786. SunJG(NULL, FALSE);
  787. }

  788. void CMyDlg::OnCHECKEnglish()
  789. {
  790. CButton    *SumRate; // 定义对象
  791. SumRate =    (CButton    *)GetDlgItem(IDC_CHECK_English);

  792. char Tmp[20];
  793. if (SumRate->GetCheck())
  794. {
  795. strcpy(Tmp, "Yes");
  796. Englishlenbool = TRUE;
  797. }
  798. else
  799. {
  800. strcpy(Tmp, "No");
  801. Englishlenbool = FALSE;
  802. }

  803. MyRegedit("Write", My_English, YesNo, Tmp);
  804. SunJG(NULL, FALSE);
  805. }

  806. void CMyDlg::OnCHECKEnglishBD()
  807. {
  808. CButton    *SumRate; // 定义对象
  809. SumRate =    (CButton    *)GetDlgItem(IDC_CHECK_EnglishBD);

  810. char Tmp[20];
  811. if (SumRate->GetCheck())
  812. {
  813. strcpy(Tmp, "Yes");
  814. EnglishBDlenbool = TRUE;
  815. }
  816. else
  817. {
  818. strcpy(Tmp, "No");
  819. EnglishBDlenbool = FALSE;
  820. }
  821. MyRegedit("Write", My_EnglishBD, YesNo, Tmp);

  822. SunJG(NULL, FALSE);
  823. }

  824. void CMyDlg::OnRadioTop()
  825. {
  826. ::SetWindowPos(m_hWnd,HWND_TOPMOST,0,0,0,0,SWP_NOMOVE|SWP_NOSIZE);
  827. char Tmp[20] = "Yes";
  828. MyRegedit("Write", My_WindowZD, YesNo, Tmp);
  829. }

  830. void CMyDlg::OnRadioNotop()
  831. {
  832. ::SetWindowPos(m_hWnd,HWND_NOTOPMOST,0,0,0,0,SWP_NOMOVE|SWP_NOSIZE);
  833. char Tmp[20] = "No";
  834. MyRegedit("Write", My_WindowZD, YesNo, Tmp);
  835. }

  836. void CMyDlg::OnSelchangeCOMBOCoutMS()
  837. {
  838. int iPos=((CComboBox*)GetDlgItem(IDC_COMBO_CoutMS))->GetCurSel();

  839. This->SetDlgItemText(IDC_EDIT_Chinese, "0");
  840. This->SetDlgItemText(IDC_EDIT_ChineseBD, "0");
  841. This->SetDlgItemText(IDC_EDIT_English, "0");
  842. This->SetDlgItemText(IDC_EDIT_EnglishBD, "0");
  843. This->SetDlgItemText(IDC_EDIT_SUMTO, "0");
  844. This->SetDlgItemText(IDC_EDIT_SUMTO_JJ, "0");
  845. This->SetDlgItemText(IDC_STATIC_ZT, "【拖拽txt文件到界面也可得到结果】");

  846. KillTimer(0);
  847. ReadJqb = FALSE;
  848. //KillTimer(1);

  849. if (iPos == 0)
  850. {
  851. CButton    *SumRate; // 定义对象
  852. SumRate =    (CButton    *)GetDlgItem(IDC_CHECK_Sumrate);

  853. if (SumRate->GetCheck()) // 设置计算频率
  854. GetDlgItem(IDC_EDIT_Timerlen)->EnableWindow(1);

  855. GetDlgItem(IDC_CHECK_Sumrate)->EnableWindow(1);
  856. SetTimer(0, Timeslen, ScanDangQText);
  857. }

  858. if (iPos == 1)
  859. {
  860. GetDlgItem(IDC_EDIT_Timerlen)->EnableWindow(0);
  861. GetDlgItem(IDC_CHECK_Sumrate)->EnableWindow(0);
  862. //SetTimer(1, Timeslen, ScanJqb);
  863. ReadJqb = TRUE;
  864. This->OnDrawClipboard();
  865. }

  866. if (iPos == 2)
  867. {
  868. GetDlgItem(IDC_EDIT_Timerlen)->EnableWindow(0);
  869. GetDlgItem(IDC_CHECK_Sumrate)->EnableWindow(0);

  870. char FilePath[MAX_PATH] = {0};

  871. CFileDialog dlg(TRUE, "DEM Files (*DEM)", NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT |OFN_ALLOWMULTISELECT|OFN_ENABLESIZING,
  872. "纯文本文件 (*.txt、*.cpp、*.c、*.h、*.asm)|*.txt; *.cpp; *.c; *.h; *.asm||",NULL);
  873. dlg.m_ofn.lpstrTitle="请选择文件";
  874. if(dlg.DoModal()==IDOK)
  875. {
  876. strcpy(FilePath,dlg.GetPathName());
  877. if (strlen(FilePath))
  878. OpenFile(FilePath);
  879. }
  880. }
  881. /*char Tmp[20] = {0};
  882. sprintf(Tmp, "%d", iPos);
  883. MyRegedit("Write", My_CoutMS, My_CoutMS, Tmp);*/
  884. }

  885. CScrollBar* CMyDlg::GetScrollBarCtrl(int nBar) const
  886. {
  887. // TODO: Add your specialized code here and/or call the base class

  888. return CDialog::GetScrollBarCtrl(nBar);
  889. }

  890. void CMyDlg::OnDrawClipboard()
  891. {
  892. CDialog::OnDrawClipboard();

  893. if(ReadJqb)
  894. {
  895. int Datelen = 0;
  896. char *TmpJqb = NULL;

  897. Rjqb(&Datelen);// 先获取数据长度
  898. if (Datelen)
  899. {
  900. TmpJqb = new char[Datelen+1];
  901. strcpy(TmpJqb, Rjqb(&Datelen));// 再次获取内容
  902. This->SetDlgItemText(IDC_STATIC_ZT, TmpJqb);
  903. SunJG(TmpJqb, TRUE);

  904. if(TmpJqb)
  905. delete []TmpJqb;
  906. }
  907. }

  908. }

  909. void CMyDlg::OnMove(int x, int y)
  910. {
  911. CDialog::OnMove(x, y);

  912. char Buf[100] = {0};

  913. static int X=0, Y=0;
  914. RECT rect;
  915. GetWindowRect(&rect);

  916. if (X != rect.left)
  917. {
  918. X = rect.left;
  919. if (!SC_MAXIMIZEbool)
  920. {
  921. if (MyKFWindowHeigth == 42) //  如果是没有皮肤的
  922. X -= 105;
  923. else
  924. X -= 115;
  925. }
  926. sprintf(Buf, "%d", X);
  927. MyRegedit("Write", My_WindowX, My_WindowX, Buf);
  928. }

  929. if (Y != rect.top)
  930. {
  931. Y = rect.top;
  932. sprintf(Buf, "%d", Y);
  933. MyRegedit("Write", My_WindowY, My_WindowY, Buf);
  934. }

  935. // TODO: Add your message handler code here

  936. }

  937. // 实现拖拽统计
  938. void CMyDlg::OnDropFiles(HDROP hDropInfo)
  939. {
  940. // TODO: Add your message handler code here and/or call default
  941. KillTimer(0);// 一定要先结束这些定时器 不然会很占系统资源
  942. //KillTimer(1);
  943. ReadJqb = FALSE;

  944. UINT count;
  945. char FilePath[MAX_PATH] = {0};

  946. GetDlgItem(IDC_EDIT_Timerlen)->EnableWindow(0);
  947. GetDlgItem(IDC_CHECK_Sumrate)->EnableWindow(0);

  948.     count = DragQueryFile(hDropInfo, 0xFFFFFFFF, NULL, 0);            
  949.     if(count)
  950.     {   
  951.         for(UINT i=0; i<count; i++)
  952.         {   
  953. int pathLen = DragQueryFile(hDropInfo, i,FilePath,sizeof(FilePath));
  954. OpenFile(FilePath);
  955. ((CComboBox*)GetDlgItem(IDC_COMBO_CoutMS))->SetCurSel(2);
  956. DragFinish(hDropInfo);
  957.         }  
  958.     }   
  959.     DragFinish(hDropInfo);   

  960. CDialog::OnDropFiles(hDropInfo);
  961. }

  962. HBRUSH CMyDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
  963. {
  964. HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
  965. CBrush m_brush;
  966. if(nCtlColor==CTLCOLOR_EDIT &&  pWnd->GetDlgCtrlID()==IDC_EDIT_SUMTO_JJ)//注意此处的(pWnd->),否则没效果
  967. {
  968. pDC->SetTextColor(RGB(0, 0, 255));
  969. pDC->SetBkColor(RGB(0,0,0));//设置文本背景色
  970. pDC->SetBkMode(1);//设置背景透明
  971. hbr = (HBRUSH)m_brush;
  972. }

  973. if(nCtlColor==CTLCOLOR_EDIT &&  pWnd->GetDlgCtrlID()==IDC_EDIT_SUMTO)//注意此处的(pWnd->),否则没效果
  974. {
  975. pDC->SetTextColor(RGB( 0, 0, 255));
  976. pDC->SetBkColor(RGB(0,0,0));//设置文本背景色
  977. pDC->SetBkMode(1);//设置背景透明
  978. hbr = (HBRUSH)m_brush;
  979. }
  980. return hbr;
  981. }

  982. void CMyDlg::OnJingJianMS()
  983. {
  984. if (SC_MAXIMIZEbool)
  985. {
  986. SC_MAXIMIZEbool = FALSE;
  987. MyWindowMS(TRUE);

  988. }
  989. else
  990. {
  991. //AfxMessageBox("退出模式");
  992. SC_MAXIMIZEbool = TRUE;
  993. MyWindowMS(FALSE);
  994. }
  995. }
复制代码





分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表