第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

請問一下關(guān)于VC++的Winmain函數(shù)(WINAPI是什么?)

請問一下關(guān)于VC++的Winmain函數(shù)(WINAPI是什么?)

長風(fēng)秋雁 2019-07-09 10:06:44
關(guān)于VC++的Winmain函數(shù)(WINAPI是什么?)
查看完整描述

6 回答

?
蝴蝶不菲

TA貢獻(xiàn)1810條經(jīng)驗 獲得超4個贊

如果你創(chuàng)建工程時選擇Win32 Application,然后選擇A Simple Win32 Application,在主cpp里面就可以看到WinMain()函數(shù)

查看完整回答
反對 回復(fù) 2019-07-14
?
慕姐4208626

TA貢獻(xiàn)1852條經(jīng)驗 獲得超7個贊

WinMain()函數(shù)等價于控制臺程序中的main()函數(shù)。

該函數(shù)是執(zhí)行開始的地方,也是為程序其余部分執(zhí)行基本初始化工作的地方。

為了允許Windows傳遞數(shù)據(jù),WinMain()函數(shù)有4個形參和一個int類型的返回值,其原型如下:

int WINAPI WinMain(HINSTANCE hInstance,

HINSTANCE hPrevInstance,

LPSTR lpCmdLine,

int nCmdShow

);

返回類型說明符int的后面,有一個函數(shù)說明符WINAPI。WINAPI是一個Windows定義的宏,將使系統(tǒng)以特定于Windows
API函數(shù)的某種特殊方式處理函數(shù)名和實參。這種方式與C++通常處理函數(shù)的方式不同。具體的細(xì)節(jié)是不重要的——這只不過是Windows所要求的方式而
已,因此只需要將WINAPI宏名稱放在由Windows調(diào)用的函數(shù)名前面即可。

如果確實想要了解調(diào)用約定,就查看隨Visual
C++提供的文檔,文檔中有對調(diào)用約定的描述。WINAPI定義為__stdcall,將此修飾符置于函數(shù)名之前表明使用的是標(biāo)準(zhǔn)Windows調(diào)用約
定。這要求參數(shù)以相反的順序被推入棧,被調(diào)用函數(shù)結(jié)束時清除棧。本章稍后將看到的CALLBACK修飾符也定義為__stdcall,因此與WINAPI
是等價的。標(biāo)準(zhǔn)C++調(diào)用約定由__cdecl修飾符指定。

Windows傳遞給WinMain()函數(shù)的4個參數(shù)包含著重要的數(shù)據(jù):

hInstance屬于HINSTANCE類型,是指向某個實例的句柄——
這里的實例是正在運行的程序。句柄是標(biāo)識某種對象(這里是應(yīng)用程序的實例)的整數(shù)值。句柄的實際整數(shù)值是多少并不重要。在任何給定時刻都可能有好幾個程序
在Windows下執(zhí)行,這就使相同應(yīng)用程序可能有若干副本同時在活動,而這種情形需要識別出來。因此,hInstance句柄標(biāo)識某個特定的副本。如果
啟動某個程序的多個副本,則每個副本都有自己獨特的hInstance值。正如我們很快就將看到的那樣,句柄還用來標(biāo)識各種其他事物。

hPrevInstance是從16位版本的Windows操作系統(tǒng)繼承下來的,我們可以放心地對它置之不理。在當(dāng)前版本的Windows中,該參數(shù)始終為空。

lpCmdLine是指向某個字符串的指針,該字符串包含啟動程序的命令行字符。該指針允許挑出可能在命令行中出現(xiàn)的任何參數(shù)值。LPSTR類型是
另一種Windows類型,用來指定32位(long)的字符串指針,或者當(dāng)以64位模式編譯時,則用來指定64位的字符串指針。WinMain()的另
一個版本接收LPWSTR,用于使用Unicode。

nCmdShow決定著被創(chuàng)建窗口的外觀。窗口可以正常顯示,也可以最小化顯示;例如,程序的快捷方式可能指定該程序在啟動時應(yīng)該最小化顯示。該參
數(shù)可以是一組固定值之一,這些值是由像SW_SHOWNORMAL和SW_SHOWMINNOACTIVE這樣的一些符號常量定義的。此類定義窗口顯示方
式的常量還有9個,它們都以SW_開始。通常不需要檢查nCmdShow的值,而是直接將其傳遞給負(fù)責(zé)顯示應(yīng)用程序窗口的Windows API函數(shù)。

程序中的WinMain()函數(shù)需要做以下4件事情:

告訴Windows該程序需要的窗口種類

創(chuàng)建程序窗口

初始化程序窗口

檢索屬于該程序的Windows消息



查看完整回答
反對 回復(fù) 2019-07-14
?
眼眸繁星

TA貢獻(xiàn)1873條經(jīng)驗 獲得超9個贊

是一個宏
#define WINAPI __stdcall

具體來說,他們是關(guān)于堆棧的一些說明,首先是函數(shù)參數(shù)壓棧順序,其次是壓入堆棧的內(nèi)容由誰來清除,調(diào)用者還是函數(shù)自己?

stdcall的調(diào)用約定意味著:

1)參數(shù)從右向左壓入堆棧;
2)函數(shù)自身修改堆棧;
3)函數(shù)名自動加前導(dǎo)的下劃線,后面緊跟一個@符號,其后緊跟著參數(shù)的尺寸。

查看完整回答
反對 回復(fù) 2019-07-14
?
MMTTMM

TA貢獻(xiàn)1869條經(jīng)驗 獲得超4個贊

_stdcall是Pascal程序的缺省調(diào)用方式,通常用于Win32 Api中,函數(shù)采用從右到左的壓棧方式,自己在退出時清空堆棧。VC將函數(shù)編譯后會在函數(shù)名前面加上下劃線前綴,在函數(shù)名后加上"@"和參數(shù)的字節(jié)數(shù)。

查看完整回答
反對 回復(fù) 2019-07-14
?
翻過高山走不出你

TA貢獻(xiàn)1875條經(jīng)驗 獲得超3個贊

winmain是windows系統(tǒng)應(yīng)用程序的入口,他是應(yīng)用程序進(jìn)程的主線程,要創(chuàng)建一個進(jìn)程,并且在windows環(huán)境下運行必須用winmain作為入口,而且必須是windows定義的格式寫。。。。
而main()作為程序入口,有的運行環(huán)境用有的運行環(huán)境不用,控制臺程序用main,虛擬機(jī)程序,比如c#就用main()。。。。。
有些應(yīng)用軟件winmain函數(shù)被封裝了,改用main()函數(shù),但他外層有winmain,winmain是windows唯一識別的應(yīng)用程序入口,哪怕你用的是main,但歸結(jié)的底層入口還是winmain,比如虛擬機(jī)表面上用main,但他和系統(tǒng)交互還是用的winmain創(chuàng)建入口。。。。
winmain只要能使用windowsAPI的軟件都支持,但用main就未必了。

查看完整回答
反對 回復(fù) 2019-07-14
  • 6 回答
  • 0 關(guān)注
  • 1272 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號