[C++, WinAPI] Czym są uchwyty?
Ostatnio zmodyfikowano 2015-09-11 22:29
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. 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ą? |
|
1aam2am1 |
» 2015-09-11 13:53:59 void* to wskaźnik na wszystko. Jeżeli wiesz na co to możesz na tym operować. |
|
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? |
|
michal11 |
» 2015-09-11 17:17:29 Raczej dosłownie (w granicach rozsądku oczywiście). |
|
Gibas11 |
» 2015-09-11 18:22:19 To ja dam prosty przykład: #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; }
|
|
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. 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. :) |
|
« 1 » |