ProgressBar in dialog

di vale88 il
7 risposte

Ho creato un thread per visualizzare la mia ProgressBar in un'altra dialog

DWORD  WINAPI ThreadProc(LPVOID pParam)
{
	Dlg.DoModal(); //dialog che contiene la progressBar

	return 1;

}

void CModificaBollaDlg::OnBnClickedOk()
{
	
	HANDLE thread = CreateThread(NULL, 0, ThreadProc, this, 0, NULL);


/// funzioni///

	TerminateThread(thread, 0);
	
	CDialogEx::OnOK();
}


Però io adesso vorrei passare la posizione alla mia dialog che contiene la progressBar, come posso fare?

7 Risposte

  • Ma perchè in un altro thread? Non ha senso dato che dipende da un valore che sta nel thread principale.

  • 24/10/2024 - oregon ha scritto:


    Ma perchè in un altro thread? Non ha senso dato che dipende da un valore che sta nel thread principale.

    Ho scelto di utilizzare un altro thread perchè mentre laProgress nell'altra dialog scorre continua il processo sotto, ma adesso non so come fare per cambiare i valori nella progress

  • 24/10/2024 - oregon ha scritto:


    Ma perchè in un altro thread? Non ha senso dato che dipende da un valore che sta nel thread principale.

    Adesso ho utilizzato un Timer nella mia ProgressBar, però vedo che utilizzando terminate Thread l'evento OnClose nella mia dialog che contiene la ProgressBar non è captato, come mai?

  • Non ha senso usare un thread! Anzi è sbagliato

    Non sono due lavori indipendenti.

    Gestisci la ProgressBar nel ciclo del lavoro principale

  • 25/10/2024 - oregon ha scritto:


    Non ha senso usare un thread! Anzi è sbagliato

    Non sono due lavori indipendenti.

    Gestisci la ProgressBar nel ciclo del lavoro principale

    sì ma gestendola nel ciclo del lavoro principale e facendo la DoModal la mia dialog con la progressBar diventa bloccante..

    void CModificaBollaDlg::OnBnClickedOk()
    {
    	
    	HANDLE thread = CreateThread(NULL, 0, ThreadProc, this, 0, NULL);
    
    
    /// funzioni///  -----> funzioni che non potrebbero essere eseguite con la dialog bloccante
    
    	TerminateThread(thread, 0);
    	
    	CDialogEx::OnOK();
    }
  • 25/10/2024 - oregon ha scritto:


    https://www.codeproject.com/Articles/1651/Tutorial-Modeless-Dialogs-with-MFC

    ho creato una dialog modeless, ora ho il problema che non riesco a creare all'interno degli elementi e su internet non riesco a trovare un documento adeguato.

       
       void CModificaDlg::OnBnClickedOk()
    {
       CDlgPr dialog;
    
    
    	dialog.m_button = new CButton;
    
    	dialog.m_button->Create(_T("Rearrange"), WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON, CRect(0, 0, 128, 32), this, IDC_BUTTON1); // here will create a button
    
    	dialog.Create(IDD_DIALOG20);
    
    	dialog.ShowWindow(SW_SHOW);
Devi accedere o registrarti per scrivere nel forum
7 risposte