《一》關於全域性變數的設定。
1》在stdfx.h裡面定義乙個全域性變數即可,其他地方使用,就可以用extern宣告。
在cwinthread裡面有個成員變數mainfram,所以在這裡定義乙個公共成員變數也是可以的。
《二》關於執行緒
主要有兩種執行緒,乙個是所謂的uithread,乙個是work thread.
首先說uithread吧,它是乙個runtimeclass繼承cwinthread,然後設定mainframe,
再用cwinthread* afxbeginthread( cruntimeclass*pthreadclass, intnpriority= thread_priority_normal, uintnstacksize= 0, dworddwcreateflags= 0, lpsecurity_attributeslpsecurityattrs= null );
既可以啟動,乙個很好的例子就是計時器,這裡就不貼**了。
然後是work thread
首先設定執行緒函式 uint threadfun(lpvoid ),有兩種選擇,定義成全域性函式,或者類成員函式,記得要定義成static才能去掉this指標。
然後使用
cwinthread* afxbeginthread( cruntimeclass*pthreadclass, intnpriority= thread_priority_normal, uintnstacksize= 0, dworddwcreateflags= 0, lpsecurity_attributeslpsecurityattrs= null );啟動
關於同步問題,以及互斥,臨界資源,等問題,稍加學習,使用訊號量,互斥鎖以及監視器,就可以實現。
再者就是關於執行緒的狀態切換的問題,這裡不再贅述。
《三》自定義視窗訊息
首先定義訊息碼,如#define wm_my_msg wm_user+1
然後定義訊息處理函式afx onmymsg()然後在message map新增處理項on_message(wm_sock_msg,onsockmsg)
使用postmessage(hwnd,lpstr,wparam,lpram)有一些的函式。自己選擇吧,
《四》關於網路程式設計問題。這裡跟基於控制台的程式的乙個很大區別就是不能阻塞,否則ui介面處於假死狀態。no response
有兩種方式:
1》使用執行緒。
2》使用mfc封裝的csocket,casy。。。(非同步套接字,名字有點長,記不住了。)繼承這兩個其中的乙個,然後定製自己想要偵聽的訊息,如fd_read或者fd_write等等,然後改寫處理函式即可。
我在這裡使用的是多執行緒 的方式。
首先是用執行緒接收網路資訊,然後自定義乙個視窗訊息,將資訊傳遞給小視窗訊息處理函式,處理函式解析訊息,然後做出相印的反應,並且更新ui。
<五>關於新增心的標頭檔案,而出現預編譯通不過的問題即:fatal error c1010: unexpected end of file while looking for precompiled header directive.處理方式很簡單,在這裡新增stdfx。h就ok了。
還有一種方法:對於vc6::如果發生錯誤的檔案是由其他的c**檔案新增進入當前工程而引起的,則alt+f7進入當前工程的 settings,選擇c/c++選項卡,從category組合框中選中precompiled headers,選擇not using precompiled headers。確定。
原因也很簡單:
對預編譯標頭檔案說明如下:
所謂標頭檔案預編譯,就是把乙個工程(project)中使用的一些mfc標準標頭檔案(如windows.h、afxwin.h)預先編譯,以後該工程編譯時,不再編譯這部分標頭檔案,僅僅使用預編譯的結果。這樣可以加快編譯速度,節省時間。
預編譯標頭檔案通過編譯stdafx.cpp生成,以工程名命名,由於預編譯的標頭檔案的字尾是「pch」,所以編譯結果檔案是projectname.pch。
編譯器通過乙個標頭檔案stdafx.h來使用預編譯標頭檔案。stdafx.h這個頭檔名是可以在project的編譯設定裡指定的。編譯器認為,所有在指令#include "stdafx.h"前的**都是預編譯的,它跳過#include "stdafx. h"指令,使用projectname.pch編譯這條指令之後的所有**。
因此,所有的cpp實現檔案第一條語句都是:#include "stdafx.h"。
《六》關於clistbox的問題,就是使用addstring的時候預設的是安首字元字母順序插入
藥箱插入末尾可以使用:insterstring(-1,cstring);當然也可以附加自己的順序處理函式。
時間原因就嫌寫這麼多把。
程式猿是練出來的。加油!(maxf也要加油!)
構架設計重要
鏈式程式設計初試
鏈式程式設計思想 將多行操作通過 連線成一句 使 可讀性好,比如 a 1 b 2 c 3 代表性的就是masonry 鏈式程式設計特點 方法的返回值是block,block必有返回值 自身物件 block引數 操作物件 先簡單介紹下目前咱們已知的程式設計思想。1 面向過程 處理事情以過程為核心,一步...
MFC國際化與多語言 01 基於Dialog
人生的意義不在於留下什麼,只要你經歷過,就是最大的美好,這不是無能,而是一種超然。泰戈爾 系統 win10 x64 vs版本 vs2010 旗艦版 1 基於dialog的mfc程式,initinstance 例程中新增下列 switch m nlanguagesel setthreaduilangu...
基於MFC的執行緒函式程式設計
int cnt 0 計數器 int terminal flag 0 stop標誌 cwinthread m pthread 執行緒名 static uint jisuan lpvoid pparam 執行緒函式新增的執行緒函式如下,利用this指標指向計數器cnt,顯示到edit control中,...