Oppure

Loading
10/03/18 20:35
Ma se vuoi programmare con le API Win32, perché non cerchi un bel libro e lo studi? Il classico Petzold (Programming Windows), ad esempio ...

Comunque, ad esempio i parametri sono spiegati su MSDN, anche i tipi di dati ... se leggi, c'è tutto.

Ma ci vuole tempo e soprattutto pazienza ...
10/03/18 20:59
Mikelius
Postato originariamente da Godrek:

Ah ok e invece per capire il tipo dei 4 argomenti da passare alla funzione come devo fare?
(cioè come facevi a sapere ad esempio che il secondo e il terzo argomento erano stringhe e gli altri due no?)
Nella dichiarazione della funzione che ho trovato nel sito da dove dovrei capirlo?

Sotto al codice ho trovato:
Parameters:
hWnd [in, optional]
Type: HWND

int WINAPI MessageBox(
  _In_opt_ HWND    hWnd,
  _In_opt_ LPCTSTR lpText,
  _In_opt_ LPCTSTR lpCaption,
  _In_     UINT    uType
);


Come detto da nessuno, non si può spiegare in forum come programmare con le API, prenditi un libro e studialo.
Sicuramente in tutti i libri troverai che :

LPCTSTR è un tipo usato dalla microsoft per indicare un const char* o const wchar_t* (dipende dalla macro _UNICODE).

_In_ e _In_opt_ invece fanno parte della documentazione SAL (usata solo dalla microsoft a quanto ne so) che indica che i parametri sono parametri di input (fai finta che esse siano delle macro vuote).
Le API sono migliaia, MSDN e un buon libro è l'unica soluzione per usarle.

aaa
10/03/18 21:05
Godrek
La pazienza c'è e soltanto che mi servirebbe qualche linea guida per sapere almeno come muovermi su msdn visto che ai corsi che ho frequentato non se ne è mai parlato.
Considerando soltanto il primo parametro della procedura MessageBox:
_In_opt_ HWND hWnd

Su msdn (msdn.microsoft.com/en-us/library/windows/desktop/…(v=vs.85).aspx) ho trovato:

HWND     --->     typedef HANDLE HWND;
    
HANDLE     --->     typedef PVOID HANDLE;

PVOID    --->    typedef void *PVOID;

quindi (penso) posso dedurre che:
hWnd è il nome del parametro (?)
HWND sta per puntatore a void (?)
quindi fin'ora questo corrisponderebbe a: void *hWnd

non ho però trovato niente su _In_opt_, come dovrei fare? mi basta capire solo il ragionamento che c'è dietro
Ultima modifica effettuata da Godrek 10/03/18 21:14
aaa
10/03/18 21:26
Mikelius
Ripeto.. _In_opt_ è la documentazione che usa la microsoft perchè non gli piace usare metodi standardizzati.

Scherzi a parte :
msdn.microsoft.com/it-it/library/…

Se non usi Visual Studio non usarle. se usi Visual Studio, pensale come macro vuote. Per programmare non servono.

In poche parole, tramite le annotazioni SAL l'ambiente di sviluppo Visual Studio riesce a effettuare Debug più accurati, tramite processi complessi (che serve sapere solo ai programmatori Microsoft) indicano al compilatore il tipo di variabile.
_In_ indica che la variabile è un input (quindi prima deve essere almeno inizializzata dal chiamante)
_In_opt_ indica che è possibile sia NULL (vietata da _In_ solamente).

Sono indicazioni aggiuntive che esplicitano il ruolo di ogni parametro, senza conoscere come è fatta la funzione.
Nessun altro compilatore la usa (mi pare siano pure sotto copyright Microsoft). Non ti soffermare troppo su esse.

P.s. se hai frequentato solo corsi per LINUX, è ovvio che non hai sentito parlare di strumenti esclusivi per Windows.
Ultima modifica effettuata da Mikelius 10/03/18 21:30
aaa
10/03/18 21:34
Godrek
Visto che tramite forum non è possibile, se volessi approfondire la questione di programmare le WinApi in C:
1. mi basterebbe come pre-requisito l'aver frequentato i corsi universitari di programmazione C e sistemi operativi (C/LINUX)?
2. Come potrei documentarmi da zero sull'argomento? Magari con qualcosa in italiano.
aaa
10/03/18 21:59
pierotofy
1. No. Dovresti approfondire per conto tuo (leggendo libri specialmente).
2. aleax.it/TutWin32/…
Ultima modifica effettuata da pierotofy 10/03/18 22:00
Il mio blog: piero.dev
10/03/18 22:28
Godrek
Che pre-requisiti mi mancherebbero? Così da andarmi a vedere i libri sugli argomenti giusti
Ultima modifica effettuata da Godrek 10/03/18 22:55
aaa
11/03/18 0:09
AldoBaldo
A me è stato molto utile questo:

venom630.free.fr/pdf/…
Ultima modifica effettuata da AldoBaldo 11/03/18 0:13
ATTENZIONE! Sono un hobbista e l'affidabilità delle mie conoscenze informatiche è molto limitata. Non prendere come esempio il codice che scrivo, perché non ho alcuna formazione accademica e rischieresti di apprendere pratiche controproducenti.