2010-11-10 4 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

3

GPTR является следующим å сочетания GMEM_FIXED и GMEM_ZEROINIT (OR).

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.

Смежные вопросы