WINDOWS程式設計入門乙個初級問題的分析

2021-03-31 08:56:29 字數 1772 閱讀 4988

#include //包括了所有基本的windows api函式,寫win32應用程式必須包含

lresult callback wndproc(hwnd hmainwnd,uint message,wparam wparam,lparam lparam)

//lresult 是函式的型別,callback宣告了函式引數的呼叫順序。詳情請看這裡。

default:

break;

}//以下這個函式是呼叫預設的訊息處理函式

return defwindowproc(hmainwnd,message,wparam,lparam);

} 這裡面最讓人不明白的就是資料型別了。當你學完標準的c後,你看這個程式,就跟看天書一樣,很多的東西你明白語法,但是就是看不懂。所以,首先我來說一下windows程式設計裡的資料型別。

以下資料取自於vc6 include目錄下的「windef.h」檔案。

#define callback pascal

#define winapi cdecl

#define winapiv cdecl

#define apientry winapi

#define apiprivate cdecl

#define pascal __pascal

#define callback __stdcall

#define winapi __stdcall

#define winapiv __cdecl

#define apientry winapi

#define apiprivate __stdcall

#define pascal __stdcall

typedef unsigned long dword;

typedef int bool;

typedef unsigned char byte;

typedef unsigned short word;

typedef float float;

typedef int int;

typedef unsigned int uint;

typedef uint wparam;

typedef long lparam;

typedef long lresult;

你可以看到,這裡面有很多的定義的本質是一樣的,為的只是便於閱讀而已。其實,win32環境下只有一種資料型別,就是32bit整形,其他的都是來自於這裡。而且,絕大部分資料型別直接就是32bit的。這樣,你所要做的事情,就是熟悉這些名字,詳情見《win32資料型別入門》。

int callback winmain()  。這個函式是win32程式的入口,就象dos下的main(),不同的是main函式的引數是可選的,winmain函式的引數是必須的。相同的是,main和winmain都不是給程式設計師呼叫的,而是有系統呼叫的。在c裡面,main是沒有返回值的,我們看到winmain是有返回值的,它是用  int callback 來修飾的。callback 說明了winmain函式引數呼叫的順序。int是說明了函式的返回值。關於callback的意義,請參考《win32函式壓棧順序》。根據「windef.h」檔案的定義,winmain函式的修飾符的寫法也不是唯一的。你可以有很多中寫法。例如:int pascal winmain(),int __stdcall winmain()。這些寫法其實本質是一樣的,只是為了不同的風格。

下面,的語句很多書裡都有介紹,我就不詳細說了,如果你還不熟悉,請看《win32資料型別入門》。

至此,你已經可以建立win32程式了,這個程式是乙個框架,裡面是最基本的東西 .

Windows 程式設計入門(一) Unicode

by wjb date 2018 08 03 本質上,unicode 使用16位數表示字元。unicode字符集很大,它可以支援世界上很多國家的語言文字或其他符號。在 c 中,我們用寬字元型別 wchar t 來表示 unicode 字元。在 32 和 64 位windows 中,wchar t 都...

Windows網路程式設計的乙個除錯心得

最近要除錯乙個網路程式,大致是乙個接收 socket 字串的程式。網路有些不穩定。程式很多時候能正常接收資料,但是偶爾也出錯。我發現比較的好的辦法還是通過寫入日誌檔案進行分析。該寫哪些內容進日誌檔案呢?我想了一下,應該包括三方面的內容 1.接收資料的時間 2.接收資料的長度 只有長度正確才能確保內容...

Windows入門程式設計程式筆記(一)

參考 呼叫約定 有點神奇的字元 手敲基礎 滾動條 include include int winapi winmain hinstance hinst,hinstance tmp,lpstr strcmd,int nshow int messageboxprint const char szform...