Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[C++, WinAPI] Czym są uchwyty?

Ostatnio zmodyfikowano 2015-09-11 22:29
Autor Wiadomość
kmlkamilek
Temat założony przez niniejszego użytkownika
[C++, WinAPI] Czym są uchwyty?
» 2015-09-10 18:05:42
Pytanie niby proste, ale ciekawi mnie to odkąd zacząłem zabawę z WinAPI.

C/C++
typedef void * PVOID;
typedef PVOID HANDLE;

W dokumentacji znalazłem, że uchwyt to wskaźnik na zmienną typu void. Void jest typem przechowującym pusty typ danych. Jak więc funkcje na nim operują?
P-137405
1aam2am1
» 2015-09-11 13:53:59
void* to wskaźnik na wszystko.
Jeżeli wiesz na co to możesz na tym operować.
P-137415
kmlkamilek
Temat założony przez niniejszego użytkownika
» 2015-09-11 16:44:54
Jak mam rozumieć, że void* jest wskaźnikiem na wszystko?
P-137419
michal11
» 2015-09-11 17:17:29
Raczej dosłownie (w granicach rozsądku oczywiście).
P-137420
Gibas11
» 2015-09-11 18:22:19
To ja dam prosty przykład:
C/C++
#include <iostream>
using namespace std;

int tablica[ 3 ] = { 1, 2, 3 };

void wypisz( void * tab )
{
    for( int i = 0; i < 3; i++ )
         cout << static_cast < int *>( tab )[ i ] << endl;
   
}

int main()
{
    wypisz( tablica );
    return 0;
}
P-137422
kmlkamilek
Temat założony przez niniejszego użytkownika
» 2015-09-11 22:29:49
Zaczynam powoli kumać

Wskaźnik na zmienną void definiuje się gdy nie jesteśmy w stanie stwierdzić na jakim typie będziemy operować i przybiera postacie innych wskaźników w zależności od potrzeb programu.

C/C++
case WM_COMMAND:
if(( HWND ) lParam == g_hPrzycisk )
     MessageBox( hwnd, "Nacisnąłeś przycisk!", "Ha!", MB_ICONINFORMATION );

break;

To jest fragment kodu z rozdziału o kontrolkach, autor umieszcza to do procedury okna, by okno mogło rozróżnić która kontrolka na oknie wysłała WM_COMMAND. Tu nasz uchwyt HWND przybiera postać zmiennej LPARAM. Wskaźnik na void'a stał się wskaźnikiem na zmienną long. Dość sensowne rozwiązanie, oferuje wszechstronność. Tu HWND zmienia postać, by procedura okna mogła na nim operować innym razem przybierze inne formy np. w procedurach dialogowych, do wyłuskiwania informacji z kontrolek w dialogi a następnie przypisanie ich do zmiennych.

Sadzę że zrozumiałem. :)


P-137427
« 1 »
  Strona 1 z 1