程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> 畢業設計(簡易網絡協議分析器)編寫歷程(三)

畢業設計(簡易網絡協議分析器)編寫歷程(三)

編輯:關於C語言

悲劇啊~~~剛才剛寫好的博文,發布的時候,內容居然莫名其妙的沒了~~難道是用chrome的問題???啊啊啊啊啊~~~我用火狐在寫一遍好了

3月18日

離上次更新過了兩天了,今天稍微做了一點。大體上完成了,設備信息顯示那一部分。

先看看成果

主要遇到了幾個問題。

1.如何動態改變對話框的caption屬性

解決方式:使用setwindowtext

我的代碼

  1. BOOL CDevStatus::OnInitDialog(void) 
  2.     CDialog::OnInitDialog(); 
  3.     this->SetWindowTextA(LPCTSTR(CPublic::DevName)); 
  4. //下面的省略 

對右側的那個彈出窗口創建了一個類,重寫了CDialog中的OnInitDialog方法,使用this指針和一個全局變量CPublic::DevName改變了caption

 

2.全局變量的問題。由於兩個對話框之間要共享一些變量,怎麼辦呢?最容易想到的就是使用全局變量進行傳遞,但是在MFC中怎麼定義全局變量呢?查了一些資料,發現了一種方法,定義一個PUBLIC類,專門用來放置全局變量,使用的時候,用作用域來引用,其實這中間的一些問題,我還沒解決,而且我覺得用全局變量這個方式不是太好,現在的處理只是權宜之計吧~~

附代碼:

 

  1. #pragma once 
  2.  
  3. #include "pcap.h" 
  4. // CPublic 用於全局變量/函數的定義 
  5.  
  6. class CPublic : public CWnd 
  7.     DECLARE_DYNAMIC(CPublic) 
  8.  
  9. public: 
  10.     CPublic(); 
  11.     virtual ~CPublic(); 
  12.     static CString DevName; //保存選中的設備名 
  13. protected: 
  14.     DECLARE_MESSAGE_MAP() 
  15. }; 

 

3.關於LPTCSTR強制轉換的問題。下面這段代碼中d->description是char*,DevName為CString,本來想轉換成一樣的進行比較,不過發現,轉換後,那個if語句就始終是假,造成最後報空指針

 

  1. for(d = alldevs; d != NULL ;d = d->next) { 
  2.         if(d->description == CPublic::DevName)      //為什麼這裡加上LPCTSTR進行強制轉化DevName後反而會出問題?? 
  3.             break; 
  4.     } 

不進行強制轉換反而沒有問題,查了一些資料,還是沒明白....待解決中

 

4.關於在其他電腦上運行程序的問題。

因為這畢業設計總要有答辯的一天,也許到時候,沒有辦法拿自己的電腦去,那麼在不同情況下的運行問題,也要解決。我准備了一台純淨的xp虛擬機,專門用來測試。之前的控制台程序,將編譯選項改為/MT就可以了。不過MFC似乎不能這樣做,只有用靜態庫編譯了。

 

不過這樣程序大了好多啊~~

 

5.關於一些函數,在使用setwindowsText之類的函數的時候,我發現一個問題,在VS2008中,代碼提示出來的,總是諸如setwindowtextw或者setwindowtexta之類的函數,那麼這幾者之間有什麼區別呢???

我在網上搜到了這麼段話

“以前在網上看到過一個說法,VC++裡面的函數有兩套代碼,一套是ANSI下的,一套是UNICODE下的,ANSI下的函數以A結尾,UNICODE下的函數以W結尾,同時,去掉結尾字符後的函數名可以同時指代兩個函數,編譯器解釋時具體翻譯成哪一個就看你的工程是否定義在UNICODE下了”

後來更改字符集試了試,好像確實是這樣。

 

由於之前寫好的博文丟失的問題...我很郁悶...再寫一遍,就不那麼認真了...大家見諒.

其實今天有很多問題沒有解決的,在趕後面的進度的同時,還是得再把這些東西搞明白

 

畢業設計簡易網絡協議分析器)編寫歷程三)完

本文出自 “學習是一種樂趣” 博客,請務必保留此出處http://eaglexhh.blog.51cto.com/1345400/519049

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved