Dword c что это
Если вы продолжаете доказывать то, что другие уже сделали, приобретая уверенность, увеличивая
сложность ваших решений просто ради интереса, — в один прекрасный день вы оглянетесь вокруг и
увидите, что никто в действительности не делал этого!
Ричард Фейнманн
Доброй ночи, сегодня я хочу рассказать о типах данных и именах переменных при программировании под Windows.
Типы данных.
В Windows-программах вместо стандартных типов данных из C/C++ (int, long, и т.д.) применяются типы данных, определённые в различных заголовочных файлах. Наиболее часто используемые: HANDLE, HWND, BYTE, WORD, DWORD, UNIT, LONG, BOOL, LPSTR и LPCSTR. Тип HANDLE обозначает 32-разрядное целое, используемое в качестве дескриптора. Есть несколько похожих типов данных, которые имеют ту же длину, что и HANDLE, и начинаются с символа Н. Дескриптор — это просто число, определяющее некоторый ресурс. Например, тип HWND обозначает 32-разрядное целое — дескриптор окна. Тип BYTE обозначает 8-разрядное беззнаковое символьное значение, тип WORD — 16-разрядное беззнаковое короткое целое, тип DWORD — 32-разрядный целочисленный беззнаковый тип, тип UNIT — беззнаковое 32-разрядное целое. Тип LONG эквивалентен типу long. Тип BOOL обозначает целое и используется, когда значение может быть либо истинным, либо ложным. Тип LPSTR определяет указатель на строку, а LPCSTR — константный (const) указатель на строку. LPTSTR — это TCHAR *, а LPCTSTR — const TCHAR *. Для стандартных типов Microsoft C не применяется оператор *.
Переменные.
Для имён переменных Microsoft предлагает систему, предусматривающую обозначение именуемых типов данных (используется префикс).Само имя переменной начинается с заглавной буквы.
Типы префиксов:
b — BOOL
c — символ (байт)
s — строка (char или CString)
dw — DWORD
f — 16-битный флаг (битовая карта)
fn — функция
h — HANDLE
l — LONG
i — int
lp — длинный указатель
n — целое (16 бит)
p — указатель
pt — точка (два 32-битных целых)
w — WORD
sz — указатель на строку с завершающим нулём
lpsz — длинный указатель на строку с завершающим нулём
fdw — двойное слово, содержащее флаги доступа к файлу
rgb — длинное целое, содержащее комбинацию цветов RGB
Использование префиксов необходимо далеко не всегда, поэтому пишите так, как вам удобно.
Для именования функций используются имена, состоящие из глаголов или существительных, первая буква слова — заглавная.
В статье использована информация из MSDN и windef.h
Dmitri Alenitchev, Copyright © 2004
Какова суть и назначение типов DWORD и HANDLE?

Добрый вечер, господа программисты.
Недавно столкнулся в языке Си с такими типами(если это вообще типы) как DWORD и HANDLE.
Что это такое и для чего они нужны?
Желательно в красках раскрыть суть.
Заранее спасибо.
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:

Какова суть библиотеки time.h
Объясните , расскажите об #include <time.h> что за библиотека
Готовый код, раскрывающий суть типов переменных
(Админ оформи сам если, что.) Я начал изучать си пока мне объясняли про типы переменных решил.
Делегаты. Ковариантность и контравариантность — какова их суть и назначение
Недавно пересматривал книгу шилдта, а именно делегаты, прочитал пример про ковариантность и.
Какова суть и назначение конструкции «on error go to»
1)расскажите пожалуйста подробнее об on error go to. а именно,что делает: on error goto.
528 / 431 / 159
Регистрация: 25.11.2014
Сообщений: 1,662
Сообщение от sindel 
Недавно столкнулся в языке Си с такими типами(если это вообще типы) как DWORD и HANDLE.
Язык С к ним отношения не имеет, обращайся к MSDN. Это виндовая специфика.
Регистрация: 15.03.2014
Сообщений: 21
Даже если это так, объясните, пожалуйста, что они из себя представляют
528 / 431 / 159
Регистрация: 25.11.2014
Сообщений: 1,662
Сообщение от sindel 
Даже если это так, объясните, пожалуйста, что они из себя представляют
Офигеть. Самому-то не почитать? Здесь описаный все типы:
https://msdn.microsoft.com/en-. s.85).aspx
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
Помогаю со студенческими работами здесь
Управление реестром: пятнашки с DWord и назначение разрешений
День добрый. Надеюсь поможете. Постановка задачи: имеем приложение Windows.Forms, на форме.

Каковы суть и назначение ref и out
Читал книги, юзал msdn, но все равно не смог понять про операторы ref и out, точнее про ref.
Поразрядные операторы — их суть и назначение
Господа, подскажите пожалуйста, что делают поразрядные операторы, если можно, то пожалуйста на.

Каковы суть и назначение #include
Подскажите новичку, что такое #include <iomanip> и для чего это надо? Только на понятном языке 😀
Или воспользуйтесь поиском по форуму:
Типы данных в Win32 API
В WINAPI определено множество типов данных, так же, как и в C/С++ ( int , char , float и т.д.). Учить их определения не обязательно. Достаточно помнить, что они существуют, а когда они появятся или потребуются где-нибудь в программе, посмотреть их определения. В дальнейшем мы будем использовать их все. Условно их можно разделить на несколько видов: основные, дескрипторные, строковые и вспомогательные.
Основные типы
С основными типами данных трудностей возникнуть не должно. Если всё же возникнут, то нужно сюда.
BOOL – этот тип данных аналогичен bool . Он также имеет два значения – 0 или 1. Только при использовании WINAPI принято использовать вместо 0 спецификатор NULL . О нём ниже.
BYTE – байт, ну или восьмибитное беззнаковое целое число. Аналог – unsigned char .
DWORD — 32-битное беззнаковое целое. Аналоги: unsigned long int , UINT .
INT – 32-битное целое. Аналог – long int .
LONG – 32-битное целое – аналог всё также long int .
NULL – нулевой указатель. Вот его объявление:
void *NULL=0;
UINT – 32-битное беззнаковое целое. Аналоги: unsigned long int , DWORD .
Дескрипторные типы данных
Про дескрипторные типы немного рассказывалось на вводном уроке в WINAPI. Дескриптор, как говорилось ранее, — это идентификатор какого-либо объекта. Для разных типов объектов существуют разные дескрипторы. Дескриптор объекта можно описать так:
HANDLE h;
Есть также дескрипторы кисти, курсора мыши, шрифта и т.д. С их помощью мы можем при инициализации или в процессе работы приложения поменять какие-нибудь настройки, чего, например, мы не могли сделать в консольном приложении. Используются они в описательных функциях, управляющих типа: CreateProcess(), ShowWindow() и т.д. или как возвращаемое значение некоторых функций :
// получает дескриптор для устройства ввода или вывода: HANDLE h = GetStdHandle(DWORD nStdHandle);
В этой функции мы получили дескриптор считывания потоков std_in и std_out. И можем, например, его использовать в каком-нибудь условии.
Не будем вдаваться в физику создания дескрипторов. Разве что, при необходимости или для большего понимания процессов.
Примечание: для удобства в WINAPI предусмотрены сокращения для типов данных. Первая буква H – означает, что это дескриптор, от слова handle.
HANDLE – дескриптор объекта.
HBITMAP – дескриптор растрового изображения. От фразы handle bitmap.
HBRUSH – дескриптор кисти. От фразы handle brush.
HCURSOR – дескриптор курсора. От фразы handle cursor.
HDC – дескриптор контекста устройства. От фразы handle device context.
HFONT – дескриптор шрифта. От фразы handle font.
HICONS – дескриптор криптограммы. От фразы handle icons.
HINSTANCE – дескриптор экземпляра приложения. От фразы handle instance.
HMENU – дескриптор меню. От фразы handle menu.
HPEN – дескриптор пера. От фразы handle pen.
HWND – дескриптор окна. От фразы handle window.
Строковые типы данных
Для начала начнём, с того, какие кодировки существуют в Windows ОС.
Есть два вида кодировок символов: ANSI и UNICODE. Однобайтные символы относятся к ANSI, двухбайтные — к кодировке UNICODE. Мы можем с лёгкостью подключить UNICODE кодировку в свойствах проекта. И тогда в коде создать переменную типа char можно будет так:
// создаём строку из 10 элементов: wchar_t str[10];
Если же мы хотим использовать кодировку ANSI, то мы традиционно напишем:
// тоже создаём строку из 10 элементов: char str[10];
В WINAPI, в зависимости от того, подключён юникод или нет, используются два вида строк UNICODE-ные или TCHAR-ные. Ниже описаны строковые типы данных.
Всё также для удобства, первые две буквы LP – от фразы long pointer сигнализируют о том, что это указатель.
LPCSTR – указатель на константную строку, заканчивающуюся нуль-терминатором. От фразы long pointer constant string.
LPCTSTR – указатель на константную строку, без UNICODE. От фразы long pointer constant TCHAR string. Это надстройка функции LPCSTR.
LPCWSTR – указатель на константную UNICODE строку. От фразы фразы long pointer constant wide character string. Это надстройка функции LPCSTR.
LPSTR – указатель на строку, заканчивающуюся нуль-терминатором. От фразы long pointer string.
LPTSTR – указатель на строку, без UNICODE. От фразы long pointer TCHAR string. Это надстройка функции LPSTR.
LPWSTR – указатель на UNICODE строку. От фразы long pointer wide character string. Это надстройка функции LPSTR.
TCHAR – символьный тип — аналог char и wchar_t.
Вспомогательные типы
Вспомогательные типы данных используются в некоторых функциях. В частности, параметры, описанные ниже, используются при работе с функцией обратного вызова оконной процедуры такого вида:
LRESULT CALLBACK ИмяФункции(HWND hWnd, UINT uMSg, WPARAM wParam, LPARAM lParam);
Работа с данной функцией будет в следующих разделах.
LPARAM – тип для описания lParam (long parameter). Используются вместе с wparam в некоторых функциях.
LRESULT – значение, возвращаемое оконной процедурой имеет тип long .
WPARAM – тип для описания wParam (word parameter). Используются вместе с lParam в некоторых функциях.
На этом типы данных не закончены. В дальнейшем мы обязательно будем обращаться к данной статье.
Дата: 11.02.2014
Поделиться:
- ←Введение в Win32 API
- Создание полноценной оконной процедуры в Win32 API (Часть 1)→
Комментарии
npavelFax
14.02.2017 Работа в интернете официальная работа. Войдите, чтобы ответить
Gosha
21.05.2014 >В WINAPI, в зависимости от того, подключён юникод или нет, используются два вида строк UNICODE-ные или TCHAR-ные. Ниже описаны строковые типы данных.
Это не так.
Если объявлен UNICODE, то TCHAR двухбайтовый символ, если нет, то TCHAR это однобайтовый символ.
Он нужен для того чтобы написать универсальную программу, которую без переделки кода можно было бы компилировать как с использование UNICODE, так и без. И больше не для чего. А так без него можно обойтись, как в UNICODE, так и в ANSI программах.
Поэтому если используете TCHAR, то имеет смысл и весь код делать в стиле работы с TCHAR. Не надо делать так, если объявлен UNICODE:
TCHAR mainMessage[] = L»Какой то-текст!»;
И не надо делать так, если не объявлен UNICODE:
TCHAR mainMessage[] = «Какой то-текст!»;
Надо всегда делать так:
TCHAR mainMessage[] = TEXT(«Какой то-текст!»);//Эта строка без переделки будет компилирваться как с UNICODE, так и без.
Также и когда напрямую подставлются значения в функцию:
MessageBox(hwndDlg, TEXT(«Это сообщение»), TEXT(«Ошибка»), MB_OK); Войдите, чтобы ответить
Оставить комментарий
Вы должны войти, чтобы оставить комментарий.
Rust Journey: Хотите освоить язык программирования, который завоевывает мир?
Илон Маск, один из ведущих инноваторов нашего времени, утверждает, что за Rust будущее. А когда последний раз он ошибался в своих прогнозах?
✨ Не упустите свой шанс быть в авангарде IT-революции. Подписывайтесь на канал Rust Journey и начните свой путь в захватывающий мир Rust сегодня!
Аналоги BYTE, WORD, DWORD в Linux
В Windows есть определения типов BYTE, WORD, DWORD, которые объявляются в файле-заголовке WinDef.h и используются при программировании на C/C++. Какие типы являются аналогами для Linux и где они объявляются?
Отслеживать
задан 17 ноя 2010 в 11:36
34.5k 26 26 золотых знаков 98 98 серебряных знаков 214 214 бронзовых знаков
1 ответ 1
Сортировка: Сброс на вариант по умолчанию
Аналоги типов BYTE , WORD , DWORD — это типы uint8_t , uint16_t , uint32_t , определенные в stdint.h .
Отслеживать
ответ дан 17 ноя 2010 в 12:09
Nicolas Chabanovsky Nicolas Chabanovsky
51.3k 87 87 золотых знаков 267 267 серебряных знаков 505 505 бронзовых знаков
- c
- c++
- linux
-
Важное на Мете
Похожие
Подписаться на ленту
Лента вопроса
Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.
Дизайн сайта / логотип © 2024 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2024.1.26.3951