1 Востаннє редагувалося Юра_Максименко (07.11.2016 15:12:30)

Тема: Нерозумію багато чого у WINAPI

Доброго всім дня! Подивиться будь ласка.

#include<Windows.h>

//#include"Migrafik.h"




typedef unsigned char   uch;


LPITEMIDLIST CreatePIDL(DWORD dwType, LPCWSTR pwszDisplayName)
{
    LPMYPIDLDATA   pidlOut;
    USHORT         uSize;

    pidlOut = NULL;

    //Calculate the size of the MYPIDLDATA structure.
    uSize = sizeof(MYPIDLDATA);

    // Allocate enough memory for the PIDL to hold a MYPIDLDATA structure 
    // plus the terminator
    pidlOut = (LPMYPIDLDATA)m_pMalloc->Alloc(uSize + sizeof(USHORT));

    if(pidlOut)
    {
       //Assign values to the members of the MYPIDLDATA structure
       //that is the PIDL's first SHITEMID structure
       pidlOut->cb = uSize;
       pidlOut->dwType = dwType;
       hr = StringCbCopyW(pidlOut->wszDisplayName, 
                          sizeof(pidlOut->wszDisplayName), pwszDisplayName);
       
       // TODO: Add error handling here to verify the HRESULT returned 
       // by StringCbCopyW.

       //Advance the pointer to the start of the next SHITEMID structure.
       pidlOut = (LPMYPIDLDATA)((LPBYTE)pidlOut + pidlOut->cb);

       //Create the terminating null character by setting cb to 0.
       pidlOut->cb = 0;
    }

    return pidlOut;
    
}    







int WINAPI WinMain(HINSTANCE h

E:\Porivnjuvats\Po1.cpp|10|error: 'LPITEMIDLIST' does not name a type|


LPITEMIDLIST це єкземпляр структури ITEMIDLIST?  Я ж моду поплутатися що й до чого.
Де вона існуэ, ця структура? У якихось DLL?  Де вона серед віндовсу? Не розумію, хіба недостатньо інклюду Windows.h? Щось не можу ні зрозуміти, ні дочітати.

2

Re: Нерозумію багато чого у WINAPI

Де ви взяли цей код?

3 Востаннє редагувалося Юра_Максименко (07.11.2016 15:30:18)

Re: Нерозумію багато чого у WINAPI

Я вчора годину чітав якусь статтю английською.  Звичайно міг недочітати або незрозуміти.


Здається ось https://msdn.microsoft.com/en-us/librar … 85%29.aspx

4

Re: Нерозумію багато чого у WINAPI

Спробуйте дочитати ту статтю, якщо це такий великий секрет.

5

Re: Нерозумію багато чого у WINAPI

Ні, не зрозуміло.   принаймні незрозуміло до кінця.   Як таки програми можуть взаємодіяти з цією структурою?

6

Re: Нерозумію багато чого у WINAPI

Юра_Максименко написав:

Доброго всім дня! Подивиться будь ласка.
E:\Porivnjuvats\Po1.cpp|10|error: 'LPITEMIDLIST' does not name a type|

LPITEMIDLIST це єкземпляр структури ITEMIDLIST? Я ж моду поплутатися що й до чого.

Це вказівник на структуру типу ITEMIDLIST.

Де вона існуэ, ця структура? У якихось DLL?  Де вона серед віндовсу?

Цей вказівник вертає ваша функція, тож він існує спочатку в її стеку, а потім в регістрі.

Не розумію, хіба недостатньо інклюду Windows.h? Щось не можу ні зрозуміти, ні дочітати.

Може бути недостатньо. Достатньо буде підключити той заголовок, де вона визначена. В MSDN бібіліотеці, в описі цієї структури, внизу має бути таблиця, яка каже в якому заголовку вона визначена.

Подякували: cheappi386, Юра_Максименко2

7

Re: Нерозумію багато чого у WINAPI

Це, мабуть, частина якогось більшого проекту. Функція CreatePIDL повертає, за визначенням, LPITEMIDLIST, але всередині відбувається return pidlOut; pidlOut, в свою чергу, проголошений, як LPMYPIDLDATA - а цей тип, в свою чергу, проголошений вище за текстом як приклад реалізації SHITEMID.

Подякували: Юра_Максименко1

8

Re: Нерозумію багато чого у WINAPI

Дуже дуже дуже дякую!!!!!!