win32 線程技巧:用類非靜態成員函數來當線程函數

  大家知道,函數的線程函數必須是靜態函數,以標準的__cdecl的方式調用的,而C++的成員函數是以__thiscall的方式調用的,相當於一個普通函數有一個預設的const ClassType* this參數。  為資料封裝的需要,我常常把線程函數封裝在一個類的內部,定義一個類的私人靜態成員函數來作為CreateThread的線程函數,通常如下:class MyClass{public:  MyClass(); ~MyClass(); static DWORD WINAPI

VC中Unicode字串的處理

Unicode :寬位元組字元集    1. 如何取得一個既包含單位元組字元又包含雙位元組字元的字串的字元個數?    可以調用Microsoft Visual C++的運行期庫包含函數_mbslen來操作多位元組(既包括單位元組也包括雙位元組)字串。    調用strlen函數,無法真正瞭解字串中究竟有多少字元,它只能告訴你到達結尾的0之前有多少個位元組。    2. 如何對DBCS(雙位元組字元集)字串進行操作?    函數 描述   

buffer stream FIFO

class buffer_stream{public: unsigned char * buf; int len; buffer_stream(unsigned char * buf_in,int len_in) {  buf= new unsigned char [len_in];  memcpy(buf,buf_in,len_in);  len=len_in;  //cout << "buffer_stream buf="<<

基於WINCE平台eVC編程要點之二- WinCE下的GPRS應用

9000嵌入式主板、EM9260嵌入式主板、EM9160嵌入式主板都是預裝了正版WinCE操作系 統,ARM9嵌入式主板的所有通訊介面均配置有標準的WinCE驅動程式,本文側重於介紹嵌入式主板中通訊串口的一種典型應用,即如何在這些嵌入式主板上 進行GPRS的應用開發。  GPRS的標準應用程式模式是作為用戶端模式,通過撥號“*99***1#”到中國移動的GPRS節點 伺服器,從而實現撥接的功能。在WinCE作業系統中提供有RAS(Remote Access

寫程式的低級錯誤

1.=,==分不清楚,多半是都寫為=;2.迴圈中忘記加減變數使得出現死迴圈。3.啟動並執行代碼和所寫的代碼並不是同一份代碼。4.if不加括弧只能有一句包含在if裡。5.忘記c與c++的區別。以後再補充。。。===============如果一個系統原來運行沒有問題,加了一些功能後出現了問題,則首先應對所加代碼進行單元分析,沒有找出問題的話再分析所加代碼和原有代碼的相關性。

多線程與AfxGetMainWnd的吐血遭遇……

 把之前用VC6寫的MFC工程升級到VC2005後,編譯運行就崩潰,莫名其妙,問了ZV說是經常出現這種問題,要重建立立個工程拖代碼才行,那好吧,就重來,折騰了好久,還是……又崩潰了……這下頭大了,同樣的代碼,VC6裡正常,VC2005反而崩潰?嘗試關閉串連的多種選項,除了出現莫名其妙的LNK

問題解決之道—-程式崩潰

最常見的程式崩潰是記憶體訪問越界,無效指標等。這種情況在debug版下較好定位。最近有個多模組的應用,程式崩潰但卻一時找不出原因。最後發現,是模組A和模組B都包含了標頭檔i.h,但工程下卻有兩份i.h(經理這麼弄的,的確不利於管理),某人改寫了其中一份i.h,卻沒有改另外一份i.h,在一個class裡加了一些變數,這時候兩個模組都能編譯串連通過,但是程式一運行就崩潰。結論,一個項目裡所包含的標頭檔一定只要一份。然後各個模組都引用同一份檔案,以利於變更,閱讀等。 

activex directshow linking 問題的解決

Strmbasd.lib(dllentry.obj) : error LNK2001: unresolved external symbol "class CFactoryTemplate * g_Templates" (?g_Templates@@3PAVCFactoryTemplate@@A)Strmbasd.lib(dllentry.obj) : error LNK2001: unresolved external symbol "int g_cTemplates"

代碼複用——DLL、COM

代碼複用的常見方式有原始碼複用、DLL和COM一、原始碼複用    把別人的源檔案直接加入到自己的工程中編譯、串連,最後產生exe檔案。這種代碼級的複用方式存以下的問題:1、一種語言編寫的原始碼只能被同一種語言所使用。如你用VC寫的代碼肯定不能在VB中直接使用,只能在其它VC工程中使用。2、程式員通常需要修改別人提供的代碼,但修改的前提是必須理解代碼提供者的思路和編碼風格,這是很費事的。3、原始碼複用導致了硬碟和記憶體空間的浪費   

pdocread.exe usage

<reference  to xda> C:/itsutils>pdocread.exe -lCopying C:/itsutils/itsutils.dll to WCE:/windows/itsutils.dllCould not update itsutils.dll to the current version, maybe it is inuse?try restarting your device, or restart ActiveSync You have

wince擷取當前路徑

《wince擷取當前路徑》在wince開發中,若要擷取程式的當前路徑,方法如下:m_CurrentPath = Path.GetDirectoryName(Assembly.GetExecutingAssembly().GetName().CodeBase);Directory.GetCurrentDirectory 方法在 .NET Compact Framework 中可用,但是當前並不支援,調用該方法會拋出一個 NotSupportedException 異常。在 Windows CE

複習負數的二進位表示方法

今天偶然看到一道華為筆試題void main(){char *p;*p=-130;printf("%d",*p);}乍一看我認為輸出就是-130,可是正確答案是126.汗我差的太多了,分析下是怎麼回事吧,原因:-130在電腦裡的二進位儲存形式是11111111,負數是用補碼的形式表示的,130補碼為01111110,因為C裡面的CHAR是8位的,正好沒超過8位,01111110的十進位就是126.複習下補碼假設有一個 int 類型的數,值為5,那麼,我們知道它在電腦中表示為:00000000 0

關於Mobile的全屏實現的一點心得

 關於Mobile的全屏實現的一點心得在做了幾個項目之後,終於找到了一個比較好的實現全屏的方法,之前做全屏的時候,在網上找了很多的實現方法,總結了下大致就2種(其他的大同小異):1、         SetForegroundWindow();         SHFullScreen(m_hWnd, SHFS_HIDESIPBUTTON);         SHFullScreen(m_hWnd, SHFS_HIDETASKBAR);         SHFullScreen(m_hWnd,

vc用gethostbyname解析網域名稱

vc用gethostbyname解析網域名稱源碼在後面,本源碼用到了MFC,需要匯入#include "winsock2.h"標頭檔,需要匯入ws2_32.lib ,可將本代碼加以修改,做成其它應用.源碼如下:int status;  WSADATA WSAData;  char szTemp1[80];    struct in_addr addr;  if ((status = WSAStartup(MAKEWORD(1,1), &WSAData)) ==

處理 屬性頁面 應用按鈕

屬性工作表具有標準對話方塊所沒有的功能:允許使用者在關閉屬性工作表之前應用所做的更改。這通過“應用”按鈕實現。本文討論可用來正確實現該功能的方法。有強制回應對話方塊通常在使用者單擊“確定”按鈕關閉對話方塊時將設定應用到外部對象。屬性工作表也是如此:當使用者單擊“確定”按鈕時,屬性工作表中的新設定生效。但是,您也許想允許使用者在不必關閉屬性工作表對話方塊的情況下儲存設定。這就是“應用”按鈕的功能。“應用”按鈕將所有屬性頁面中的當前設定都應用到外部對象,而不是僅將當前活動頁的當前設定應用到外部對象。

設定對話方塊所有控制項字型為同一字型的簡單方法

 1.在建構函式中建立字型:view plaincopy to clipboardprint?m_fontDlg.CreatePointFont(120, _T("黑體"));  //CFont m_fontDlg;m_fontDlg.CreatePointFont(120, _T("黑體")); 2.在解構函式中刪除字型:view plaincopy to clipboardprint?m_fontBig.DeleteObject();  m_fontBig.DeleteObject(); 3

類的靜態成員變數

因為類的靜態成員變數是所有執行個體共用的.所以得在類外初始化.調用的時候可以通過對象調用,也可以通過類直接調用class A{public:    int i;    //有預設值};class B{public:    static int n;    static A Aobj;};int B::n = 1;    //靜態成員變數的初始化A B::Aobj;       //靜態成員變數的初始化(執行個體化)void main(){    B Bobj;    printf("B::n=%

Window CE/mobile 網路工具

vxHpc High Performance Serial and Telnet Communications Software vxHpcPlus Serial, Telnet, SSH Plus Advanced Terminal Emulation Software pkHpc Windows Mobile to Data General, Hewlett-Packard, Pick, Stratus and Unix MediHPC Windows Mobile to Meditech

wireshark Loopback capture setup

From :http://wiki.wireshark.org/CaptureSetup/Loopback @++++++++++++++++++++++++++++++++++Alternatives A commercial network sniffer called CommView (from TamoSoft) allows to capture packets on the localhost network adapter but it dissects fewer

禁止對話方塊的拖動

 原理:  在WM_HITTEST對應的訊息處理函數OnNcHitTest中直接返回TRUE, 或者返回客戶區的值HTCLIENT,欺騙系統我點的位置是客戶區,客戶區預設是不能拖動動話框的例子:UINT CMyDlg::OnNcHitTest(CPoint point) {  // TODO: Add your message handler code here and/or call default     return HTCLIENT;//return

總頁數: 61357 1 .... 21659 21660 21661 21662 21663 .... 61357 Go to: 前往

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.