Winapi Конвертирование из одного типа в дру..

  • Автор темы GRAMER
  • Дата начала
Статус
Закрыто для дальнейших ответов.
G

GRAMER

Гость
#1
Здравствуйте у меня есть вопрос с конвертирование переменной из одного типа в другой.
Я вчера сидел разбирался в mci и для того что бы открыть устройство надо заполнить структуру по названием
Код:
MCI_OPEN_PARMS mciOpen;
Я её заполнил потом читаю дальше по книге там написано поставить эту переменную на 4 место в функции
Код:
mciSendCommand(0,MCI_OPEN,flags,(DWORD_PTR)&mciOpen);
я её поставил сначала без (DWORD_PTR) после этого компилятор выдаёт, типа туда нужно только тип DWORD_PTR
я поставил ему этот тип, всё стало работать, но так и не понял, почему функция работает если это другой даже не тип переменной, а структура. Объясните пожалуйста почему ???
Спасибо !
 
G

GRAMER

Гость
#3
Не понял ? Я знаю что передаю указатель, а вот почему он структуру воспринимает как тип , DWORD_PTR не пойму
 

grigsoft

Well-Known Member
15.11.2005
735
0
#4
Формулировка просто непонятна - если это вопрос по языку, то для компилятора все равно - ты сказал "считай это DWORD", он и привел. Сказал бы ты к байту привести - тоже сделал бы. Если это вопрос по конкретной функции, то работает потому что там внутри написано:
Код:
if (cmd==MCI_OPEN) // use structure
А сделано так потому что гнались за якобы простым апи, и поленились сделать человеческое msiOpen.
 
G

GRAMER

Гость
#5
То есть я так понял что сначала он проверит первые байты и если ему подойдёт, тогда он их
возьмёт, правильно понял или нет ?

Тогда если так то зачем они сделали эту функция с этим типом DWORD_PTR, а не просто со
структурой ?
 

grigsoft

Well-Known Member
15.11.2005
735
0
#6
Посмотри хелп на другие команды - там для каждой команды своя структура передается. Чтобы не делать 100 функций, сделали одну, универсальную.
 
Статус
Закрыто для дальнейших ответов.