Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Lenovo LOQ 15i Gen 10 (15IRX10) alla prova: il notebook gaming 'budget' che non ti aspetti
Lenovo LOQ 15i Gen 10 (15IRX10) alla prova: il notebook gaming 'budget' che non ti aspetti
Il Lenovo LOQ 15i Gen 10 (15IRX10) offre prestazioni convincenti grazie al Core i7-13650HX e alla RTX 5060 Laptop a 100W, mantenendo un prezzo competitivo tra 1100 e 1300 euro. Costruzione solida, buon display e ampia espandibilità lo rendono una scelta equilibrata per chi cerca un notebook gaming accessibile ma moderno.
Due mesi di Battlefield 6: dalla campagna al battle royale, è l'FPS che stavamo aspettando
Due mesi di Battlefield 6: dalla campagna al battle royale, è l'FPS che stavamo aspettando
Abbiamo giocato a lungo a Battlefield 6, abbiamo provato tutte le modalità multiplayer, Redsec, e le numerose personalizzazioni. In sintesi, ci siamo concentrati su ogni aspetto del titolo per comprendere al meglio uno degli FPS più ambiziosi della storia dei videogiochi e, dopo quasi due mesi, abbiamo tirato le somme. In questo articolo, condividiamo con voi tutto ciò che è Battlefield 6, un gioco che, a nostro avviso, rappresenta esattamente ciò che questo genere attendeva da tempo
Antigravity A1: drone futuristico per riprese a 360° in 8K con qualche lacuna da colmare
Antigravity A1: drone futuristico per riprese a 360° in 8K con qualche lacuna da colmare
Abbiamo messo alla prova il drone Antigravity A1 capace di riprese in 8K a 360° che permette un reframe in post-produzione ad eliche ferme. Il concetto è molto valido, permette al pilota di concentrarsi sul volo e le manovre in tutta sicurezza e decidere con tutta tranquillità come gestire le riprese. La qualità dei video, tuttavia, ha bisogno di uno step in più per essere competitiva
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 01-02-2006, 14:06   #21
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
Quote:
Originariamente inviato da swarm
HANDLE hThread = CreateThread(NULL, 0, ProvaThread, &exitCheck, 0, NULL);


dove va messa questa dichiarazione?
lo metti nel punto in cui ricevi l'evento di "avvia", in modo che il thread venga appunto avviato.
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%)
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 01-02-2006, 14:17   #22
swarm
Senior Member
 
L'Avatar di swarm
 
Iscritto dal: Jan 2003
Città: Castellammare di Stabia (NA)
Messaggi: 2031
ho fatto così

void CTestdsp3Dlg:nDisegnaBUTTON()
{
// TODO: Add your control notification handler code here


HANDLE hThread = CreateThread(NULL, 0, VelMediaThread,
&m_bStopPlot, 0, NULL);
}

ho dichiarato una variabile membro booleana m_bStopPlot.

Ho inserito la funzione membro nell'header così

DWORD WINAPI VelMediaThread(LPVOID pExitCheck);

e poi ho dichirarto così la funzione

DWORD WINAPI CTestdsp3Dlg::VelMediaThread(LPVOID pExitCheck)
{
.....
}

mi da questo errore

C:\Documents and Settings\squillante\Desktop\testdsp3\testdsp3Dlg.cpp(419) : error C2664: 'CreateThread' : cannot convert parameter 3 from 'unsigned long (void *)' to 'unsigned long (__stdcall *)(void *)'

che ho combinato?
__________________
ho fatto affari con: na decina di anime
swarm è offline   Rispondi citando il messaggio o parte di esso
Old 01-02-2006, 14:20   #23
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Quote:
Originariamente inviato da cionci
Se vuoi che ProvaThread faccia parte di una classe deve essere dichiarato come static... In tal caso ti conviene passare al posto di exitCheck un puntatore a this (visto che è static altrimenti può accedere a soli membri static) e con quello accedere a tutta la classe...

Tanto per farti un esempio:
Codice:
DWORD WINAPI MiaClasse::ProvaThread(LPVOID pMiaClasse)
{
  MiaClasse &miaClasse = *(MiaClasse*)pMiaClasse;
 
  miaClasse.eseguiCiclo();
  
  return 0;
}
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 01-02-2006, 14:27   #24
swarm
Senior Member
 
L'Avatar di swarm
 
Iscritto dal: Jan 2003
Città: Castellammare di Stabia (NA)
Messaggi: 2031
me tapino... nn ci ho capito molto....
__________________
ho fatto affari con: na decina di anime
swarm è offline   Rispondi citando il messaggio o parte di esso
Old 01-02-2006, 14:33   #25
swarm
Senior Member
 
L'Avatar di swarm
 
Iscritto dal: Jan 2003
Città: Castellammare di Stabia (NA)
Messaggi: 2031
allora...

nell'header devo dichiarare la funzione come static DWORD WINAPI CMiaClasse::ProvaThread(..) ?

ma la chiamata nel pulsante "avvia" resta uguale?
__________________
ho fatto affari con: na decina di anime
swarm è offline   Rispondi citando il messaggio o parte di esso
Old 01-02-2006, 14:39   #26
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
La chaimata sarà così:
Codice:
void CTestdsp3Dlg:nDisegnaBUTTON()
{
   HANDLE hThread = CreateThread(NULL, 0, VelMediaThread,
       this, 0, NULL);
}

DWORD WINAPI CTestdsp3Dlg::VelMediaThread(LPVOID pTestdsp3Dlg)
{
  CTestdsp3Dlg &testdsp3Dlg = *(CTestdsp3Dlg *)pTestdsp3Dlg;
 
  for(...)
  {
    .....

    if(testdsp3Dlg.m_bStopPlot)
      break;
  }
  return 0;
}
In pratica usi testdsp3Dlg per accedere all'istanza delal classe che ha lanciato il thread...
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 01-02-2006, 14:41   #27
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Quote:
Originariamente inviato da swarm
nell'header devo dichiarare la funzione come static DWORD WINAPI CMiaClasse::ProvaThread(..) ?
Nell'header avrai:

class CTestdsp3Dlg
{
...
...
static DWORD WINAPI VelMediaThread(LPVOID pTestdsp3Dlg);
}
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 01-02-2006, 14:51   #28
swarm
Senior Member
 
L'Avatar di swarm
 
Iscritto dal: Jan 2003
Città: Castellammare di Stabia (NA)
Messaggi: 2031
sto facendo una prova

in pratica alla funzione VelMediaThread quando viene chiamata faccio comparire un mess a video con MessageBox

perchè mi dice


C:\Documents and Settings\squillante\Desktop\testdsp3\testdsp3Dlg.cpp(264) : error C2352: 'CWnd::MessageBoxA' : illegal call of non-static member function
__________________
ho fatto affari con: na decina di anime
swarm è offline   Rispondi citando il messaggio o parte di esso
Old 01-02-2006, 15:04   #29
swarm
Senior Member
 
L'Avatar di swarm
 
Iscritto dal: Jan 2003
Città: Castellammare di Stabia (NA)
Messaggi: 2031
ops, forse ho capito cosa sbagliavo...

ora ho fatto un programmino prova, in cui il thread dichiarato inùcrementa ll'infinito un numero (visualizzato a video)

nell'header

static DWORD WINAPI ThreadProc(LPVOID pThrClasse);

nel file .cpp della finestra di dialogo


DWORD WINAPI CThreadsDlg::ThreadProc(LPVOID pThrClasse)
{
CThreadsDlg &thread = *(CThreadsDlg *)pThrClasse;

thread.Incrementa();

return 0;
}

ho poi definito sta funzione (guarda come sono grezzo nel programmare)
void CThreadsDlg::Incrementa()
{

int i;
char p[10];
for (i=0;;i++)
{
itoa(i,p,10);
m_iThr1 = p;
UpdateData(FALSE);
}

}

quindi, nella funzione chiamata dal pulsante avvia

void CThreadsDlg:nAvviaBUTTON()
{
// TODO: Add your control notification handler code here

HANDLE hThread = CreateThread(NULL, 0, ThreadProc, this, 0, NULL);

}



quando premo avvia, mi da errore di debug (debug assertion failed, file wincore.cpp, line 879)

che sbaglio?

(ovviamente, se setto Release come configurazione va bene... )

????
__________________
ho fatto affari con: na decina di anime

Ultima modifica di swarm : 01-02-2006 alle 15:27.
swarm è offline   Rispondi citando il messaggio o parte di esso
Old 01-02-2006, 16:05   #30
swarm
Senior Member
 
L'Avatar di swarm
 
Iscritto dal: Jan 2003
Città: Castellammare di Stabia (NA)
Messaggi: 2031
sembra che il problema insorga quando chiamo la funzione UpdateData.

Lascio perdere?
__________________
ho fatto affari con: na decina di anime
swarm è offline   Rispondi citando il messaggio o parte di esso
Old 02-02-2006, 16:57   #31
swarm
Senior Member
 
L'Avatar di swarm
 
Iscritto dal: Jan 2003
Città: Castellammare di Stabia (NA)
Messaggi: 2031
__________________
ho fatto affari con: na decina di anime
swarm è offline   Rispondi citando il messaggio o parte di esso
Old 02-02-2006, 20:55   #32
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Ci guardo domani mattina...ora non posso
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 02-02-2006, 22:28   #33
swarm
Senior Member
 
L'Avatar di swarm
 
Iscritto dal: Jan 2003
Città: Castellammare di Stabia (NA)
Messaggi: 2031
Quote:
Originariamente inviato da cionci
Ci guardo domani mattina...ora non posso
pregherò per una tua illuminazione

GRAZIEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE
__________________
ho fatto affari con: na decina di anime
swarm è offline   Rispondi citando il messaggio o parte di esso
Old 03-02-2006, 09:34   #34
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Ottengo anche io lo stesso errore...eppure lo usato in altre occasioni questo metodo... Ora vado a vedere i codici vecchi...
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 03-02-2006, 09:42   #35
swarm
Senior Member
 
L'Avatar di swarm
 
Iscritto dal: Jan 2003
Città: Castellammare di Stabia (NA)
Messaggi: 2031
confido in te.....

nn sarà che sbaglio a fare UpdateData ogni volta?
__________________
ho fatto affari con: na decina di anime
swarm è offline   Rispondi citando il messaggio o parte di esso
Old 03-02-2006, 10:09   #36
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Ah...cacchio...ora mi ricordo... Puoi condividere dati, ma l'interfacciamento con la GUI lo devi fare a scambio di messaggi !!!
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 03-02-2006, 10:16   #37
swarm
Senior Member
 
L'Avatar di swarm
 
Iscritto dal: Jan 2003
Città: Castellammare di Stabia (NA)
Messaggi: 2031
Quote:
Originariamente inviato da cionci
Ah...cacchio...ora mi ricordo... Puoi condividere dati, ma l'interfacciamento con la GUI lo devi fare a scambio di messaggi !!!
cioè? devo definire dei messaggi apposta?

usare funzioni tipo PostMessage?

cavolaccio......
__________________
ho fatto affari con: na decina di anime

Ultima modifica di swarm : 03-02-2006 alle 10:24.
swarm è offline   Rispondi citando il messaggio o parte di esso
Old 03-02-2006, 10:34   #38
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
E' facile !!! Basta che tu faccia un messaggio che fa chiamare UpdateData...sui dati ci lavori in maniera trasparente !!!
Codice:
//definisco un messaggio che è valido solo all'interno dell'applicazione
#define	WM_UPDATEDATA			WM_USER+10000


.....
.....


BEGIN_MESSAGE_MAP(CprovaMFCDlg, CDialog)
	ON_WM_SYSCOMMAND()
	ON_WM_PAINT()
	ON_WM_QUERYDRAGICON()
	//}}AFX_MSG_MAP
	ON_BN_CLICKED(IDC_BUTTON1, OnBnClickedButton1)
	ON_MESSAGE(WM_UPDATEDATA, OnUpdateData)
END_MESSAGE_MAP()

.....
.....

void CprovaMFCDlg::OnBnClickedButton1()
{
	mStopThread = mStopThread != true;
	if(mStopThread == false)
	{
		CreateThread(NULL, 0, ThreadFunction, this, 0, NULL);
	}
}


DWORD WINAPI CprovaMFCDlg::ThreadFunction(LPVOID objPointer)
{
	CprovaMFCDlg *dlg = (CprovaMFCDlg *)objPointer;

	while(!dlg->mStopThread)
	{
		Sleep(1000);
		dlg->mEditValue++;

		dlg->SendMessage(WM_UPDATEDATA);
	}

	return 0;
}

//questo gestisce il messaggio WM_UPDATEDATA
LRESULT CprovaMFCDlg::OnUpdateData(WPARAM param1, LPARAM param2)
{
	UpdateData(FALSE);
	return 0;
}
La prova che ho fatto ha un button che avvia e fa terminare il thread... Durante l'esecuzione il thread aggiorna il valore di un int che è mappato su una textbox...
Ogni volta che fa l'aggiornamento invia un messaggio che fa eseguire l'update...
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 03-02-2006, 10:50   #39
swarm
Senior Member
 
L'Avatar di swarm
 
Iscritto dal: Jan 2003
Città: Castellammare di Stabia (NA)
Messaggi: 2031
sembra abba chiaro (per me, nn che iltuo esempio nn lo sia....)

domande:

perche fai così
mStopThread = mStopThread !=true;

poi nel while, a che serve Sleep(1000)? un ritardo(di 1 sec)?

questa procedura che mi hai mostrato la ripeto per ogni messaggio che mi serve?

Grazie, sei un grande...
__________________
ho fatto affari con: na decina di anime
swarm è offline   Rispondi citando il messaggio o parte di esso
Old 03-02-2006, 11:08   #40
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
La sleep l'ho messa solo per far incrementare la variabile una volta al secondo...

mStopThread = mStopThread != true;

mi è rimasto lì per sbaglio, volevo intendere questo:

mStopThread = !mStopThread;

In pratica nego il valore corrente di mStopThread...e lo riassegno a mStopThread...ma questo te lo puoi gestire come più ti aggrada, l'importante è che quando viene eseguito per le prima volta il ciclo (o il controllo del tuo for) nel thread mStopThread sia false...

Mi sembra di aver capito il tuo thread deve disegnare un grafico...in tal caso io comunque sospenderei il thread fino a quando il pixel non è stato disegnato...

Quindi la sequenza da fare sarebbe:
Codice:
dlg->drawn = false;
setti tutti i dati per disegnare il pixel...

dlg->SendMessage(WM_UPDATEDATA); //per aggiornare eventuali variabili dell'interfaccia
dlg->SendMessage(WM_DRAWDATA); //per disegnare il grafico

while(!dlg->drawn)
  Sleep(1);
E' un'attesa quasi attiva...non mi piace per niente...ma è sicuramente più semplice di usare primitive di sincronizzazione...
Ovviamente la funzione che gestisce il messaggio deve settare drawn a true prima del return...
cionci è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Lenovo LOQ 15i Gen 10 (15IRX10) alla prova: il notebook gaming 'budget' che non ti aspetti Lenovo LOQ 15i Gen 10 (15IRX10) alla prova: il n...
Due mesi di Battlefield 6: dalla campagna al battle royale, è l'FPS che stavamo aspettando Due mesi di Battlefield 6: dalla campagna al bat...
Antigravity A1: drone futuristico per riprese a 360° in 8K con qualche lacuna da colmare Antigravity A1: drone futuristico per riprese a ...
Sony Alpha 7 V, anteprima e novità della nuova 30fps, che tende la mano anche ai creator Sony Alpha 7 V, anteprima e novità della ...
realme GT 8 Pro Dream Edition: prestazioni da flagship e anima racing da F1 realme GT 8 Pro Dream Edition: prestazioni da fl...
SpaceX: l'offerta pubblica iniziale del ...
La NASA prova i droni marziani nella Dea...
IBM acquisisce Confluent, leader nella g...
La Commissione Europea indaga AWS e Azur...
Sonda spaziale ESA JUICE: rilasciata una...
PS5 PRO a 698€? L'offerta che nessuno si...
L'equipaggio di Shenzhou-21 ha completat...
Dal milione di download alla rimozione f...
Legno, pelle naturale e socket AM5: la G...
Attenti a X-GPU: la piattaforma sospetta...
La Lotus Eletre Plug-in esiste davvero, ...
Garanzia estesa su Pixel 9 Pro e 9 Pro X...
Addio intelligenza artificiale su Window...
FRAME 4000D LCD RS ARGB, il nuovo case d...
Netflix: AV1 ora gestisce il 30% dello s...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 07:29.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Served by www3v