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 2

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


Messaggi: 525
Iscritto: 14/04/2017

Segnala al moderatore
Postato alle 20:14
Sabato, 10/03/2018
Testo quotato

Postato originariamente da Godrek:

E per utilizzarle si ha bisogno di conoscere anche l'assembler oppure una volta chiamata la funzione (scritta sia in C che in Assembler) che mi serve posso gestirla con la sola sintassi del C?


funziona allo stesso modo in cui utilizzi printf() o fgets() .
Non hai bisogno di sapere come sono state scritte, nè in che linguaggio.
Codice sorgente - presumibilmente C++

  1. #include <windows.h>
  2.  
  3. int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow)
  4. {
  5. MessageBox(NULL, "Prova di Message Box", "Message Box", MB_OK);
  6. return 0;
  7. }



Includi l'Header windows.h ,,, scrivi il WinMain() ed utilizza la funzione che ti serve.
(P.s. Ovviamente il progetto deve essere un Win 32 Aplication, non progetto console per il mio esempio)

Non ne sono sicuro, ma dovrebbero esserci pure Api per la console che puoi utilizzare senza utilizzare il WinMain(), ma non sono sicuro se per quello che hai chiesto di fare siano adatte.
In genere se utilizzi le API , avrai a che fare con la parte grafica, quindi il WinMain dovrebbe essere d'obbligo

Ultima modifica effettuata da Mikelius il 10/03/2018 alle 20:17
PM Quote
Avatar
Godrek (Normal User)
Pro


Messaggi: 76
Iscritto: 04/08/2015

Segnala al moderatore
Postato alle 20:28
Sabato, 10/03/2018
Che intendi per progetto Win32 application?
Io vorrei programmare utilizzando solamente un semplice editor di testo (come ad esempio Notepad++) e il compilatore gcc come ho sempre fatto. Avrei qualche limite nell'usare le API di Windows utilizzando questo approccio di sviluppo?

Inoltre, ho trovato in rete questo piccolo esempio che va ad usare la funzione GetCurrentProcessId inclusa in windows.h, non modificando la classica funzione main, come mai? In quali casi dovrei usare WinMain anziché main?
Codice sorgente - presumibilmente C/C++

  1. #include <windows.h>
  2. #include <stdio.h>
  3.  
  4. int main()
  5. {
  6.         DWORD pid_id = GetCurrentProcessId();
  7.         printf("The process ID of the current process is: %d.\n", pid_id);
  8.         system("pause");
  9. }



Scusate per le troppe domande :)

Ultima modifica effettuata da Godrek il 10/03/2018 alle 20:31
PM Quote
Avatar
TheDarkJuster (Member)
Guru^2


Messaggi: 1620
Iscritto: 27/09/2013

Segnala al moderatore
Postato alle 20:33
Sabato, 10/03/2018
Allora, una win32 application altro non è che una normale applicazione con linkate le librerie che permettono l'utilizzo delle winapi. Le winapi hanno una interfaccia funzionale e si possono usare in C. Non è richiesta la conoscenza di nessun altro linguaggio. Il main deve diventare WinMain, come ti è già stato detto, perché molte winapi richiedono il passaggio dei parametri in ingresso a WinMain.

PM Quote
Avatar
Mikelius (Member)
Expert


Messaggi: 525
Iscritto: 14/04/2017

Segnala al moderatore
Postato alle 20:43
Sabato, 10/03/2018
Come ho detto prima, dovrebbero esistere delle API che puoi usare tranquillamente con la console e per questo non usare un WinMain() che dovrebbe gestirti il comparto grafico (finestre, messageBox ecc ecc). (quando parlavo di WinMain() mi sono scordato di specificare per il comparto grafico, che forse è il più adatta allo scopo)
Per le richieste che hai fatto nel primo posto (screensaver, elenco USB, ecc... ecc... ) non sono sicuro che siano tutti gestibili tranquillamente da console, sopratutto se i programmi saranno per un utenza non professionale.
Detto questo: le WinApi sono gestite dall'header "Windows.h" , se la tua versione di gcc lo supporta, puoi utilizzare tutte le funzione contenute in esso. Io ti consiglio comunque la versione community (che è gratuita) di Visual Studio. E' la scelta più naturale se vuoi creare i programmi per Windows. Sicuramente avrai la compatibilità con tutte le WinApi

PM Quote
Avatar
Godrek (Normal User)
Pro


Messaggi: 76
Iscritto: 04/08/2015

Segnala al moderatore
Postato alle 20:51
Sabato, 10/03/2018
Grazie ora mi è tutto più chiaro :)
Un'ultima cosa per darmi un ultima dritta iniziale...che poi è il vero argomento per cui ho aperto la discussione...per sapere che esisteva una funzione/procedura di nome MessageBox definita in windows.h, che prenden in ingresso 4 parametri e mi permette di mostrare un messaggio d'avviso sullo schermo, dove sarei dovuto andare? mi potreste dare il link (possibilmente anche si msdn perché non sono riuscito a trovare nulla)

Ultima modifica effettuata da Godrek il 10/03/2018 alle 21:03
PM Quote
Avatar
TheDarkJuster (Member)
Guru^2


Messaggi: 1620
Iscritto: 27/09/2013

Segnala al moderatore
Postato alle 21:08
Sabato, 10/03/2018
www.google.com cerchi "MessageBox C++ winapi" e il primo risultato ( https://msdn.microsoft.com/en-us/library/windows/desktop/ms ... ) è ciò che ti serve.

PM Quote
Avatar
Godrek (Normal User)
Pro


Messaggi: 76
Iscritto: 04/08/2015

Segnala al moderatore
Postato alle 21:29
Sabato, 10/03/2018
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. );


Ultima modifica effettuata da Godrek il 10/03/2018 alle 21:32
PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 6402
Iscritto: 03/01/2010

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


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
PM Quote
Pagine: [ 1 2 3 4 ] Precedente | Prossimo