Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - C e Windows
Forum - C/C++ - C e Windows - Pagina 3

Pagine: [ 1 2 3 4 ] Precedente | Prossimo
Avatar
Mikelius (Member)
Expert


Messaggi: 525
Iscritto: 14/04/2017

Segnala al moderatore
Postato alle 21:59
Sabato, 10/03/2018
Testo quotato

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

Codice sorgente - presumibilmente C/C++

  1. int WINAPI MessageBox(
  2.   _In_opt_ HWND    hWnd,
  3.   _In_opt_ LPCTSTR lpText,
  4.   _In_opt_ LPCTSTR lpCaption,
  5.   _In_     UINT    uType
  6. );




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.


PM Quote
Avatar
Godrek (Normal User)
Pro


Messaggi: 76
Iscritto: 04/08/2015

Segnala al moderatore
Postato alle 22:05
Sabato, 10/03/2018
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 (https://msdn.microsoft.com/en-us/library/windows/desktop/aa ... 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 il 10/03/2018 alle 22:14
PM Quote
Avatar
Mikelius (Member)
Expert


Messaggi: 525
Iscritto: 14/04/2017

Segnala al moderatore
Postato alle 22:26
Sabato, 10/03/2018
Ripeto.. _In_opt_ è la documentazione che usa la microsoft perchè non gli piace usare metodi standardizzati.

Scherzi a parte :
https://msdn.microsoft.com/it-it/library/hh916383.aspx

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 il 10/03/2018 alle 22:30
PM Quote
Avatar
Godrek (Normal User)
Pro


Messaggi: 76
Iscritto: 04/08/2015

Segnala al moderatore
Postato alle 22:34
Sabato, 10/03/2018
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.

PM Quote
Avatar
pierotofy (Admin)
Guru^2


Messaggi: 6230
Iscritto: 04/12/2003

Segnala al moderatore
Postato alle 22:59
Sabato, 10/03/2018
1. No. Dovresti approfondire per conto tuo (leggendo libri specialmente).
2. http://www.aleax.it/TutWin32/tc.htm

Ultima modifica effettuata da pierotofy il 10/03/2018 alle 23:00


Il mio blog: https://piero.dev
PM Quote
Avatar
Godrek (Normal User)
Pro


Messaggi: 76
Iscritto: 04/08/2015

Segnala al moderatore
Postato alle 23:28
Sabato, 10/03/2018
Che pre-requisiti mi mancherebbero? Così da andarmi a vedere i libri sugli argomenti giusti

Ultima modifica effettuata da Godrek il 10/03/2018 alle 23:55
PM Quote
Avatar
AldoBaldo (Member)
Guru


Messaggi: 699
Iscritto: 08/01/2015

Segnala al moderatore
Postato alle 1:09
Domenica, 11/03/2018

Ultima modifica effettuata da AldoBaldo il 11/03/2018 alle 1: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.
PM Quote
Avatar
Godrek (Normal User)
Pro


Messaggi: 76
Iscritto: 04/08/2015

Segnala al moderatore
Postato alle 2:29
Domenica, 11/03/2018
Non c'è qualcosa in italiano?

PM Quote
Pagine: [ 1 2 3 4 ] Precedente | Prossimo