2010-11-10 23 views
1
(char*)GlobalAlloc(GPTR, len + 1); 

這是我從教程中使用的代碼行。我正在閱讀EDITTEXT。我主要想知道GPTR從哪裏來,以及它的用途。它還沒有在代碼的其他地方定義過。GlobalAlloc解釋

我對該行的其餘部分有了一個基本的瞭解,但MSDN的解釋並不十分清楚。他們這樣說:

HGLOBAL WINAPI GlobalAlloc(
    __in UINT uFlags, 
    __in SIZE_T dwBytes 
); 

可能有人用簡單的英語解釋,其中GPTR是,就是它的功能,以及它如何與__in UINT uFlags?我知道這是一個unsigned int,但然後知道停止。

在此先感謝。

回答

0

參考here

GPTR即0x0040結合了GMEM_FIXED和GMEM_ZEROINIT。

正如你所看到的,它只是一個位模式(即0x0040),並可以與其他允許的標誌組合

+0

啊,謝謝你的完美。沒有深入。 – Ben 2010-11-10 03:03:30

3

GPTR是GMEM_FIXED和GMEM_ZEROINIT(OR)的athe組合。

uFlags
內存分配屬性。如果指定了零,則默認爲GMEM_FIXED。除了特別指出的不兼容組合外,此參數可以是以下一個或多個值。

值含義
GHND 0x0042結合了GMEM_MOVEABLE和GMEM_ZEROINIT。
GMEM_FIXED 0x0000分配固定內存。返回值是一個指針。
GMEM_MOVEABLE 0x0002分配活動內存。內存塊永遠不會移動到物理內存中,但可以在默認堆內移動。該值不能與GMEM_FIXED結合使用。
GMEM_ZEROINIT 0x0040將存儲器內容初始化爲零。
GPTR 0x0040結合了GMEM FIXED和GMEM_ZEROINIT。