Здравствуйте, teran2000, Вы писали:
T>выполнение CSerialPort::program(); занимает много времени и нужно это показывать
T>прогресс баром
T>как объявить Progress1 чтобы можно было из CSerialPort
T>им управлять..
T>например CMy777Dlg::Progress1.SetPos(х); x-число посланных байтов
T>или есть другие более оптимальные способы?
CSerialPort работает в другом потоке и делает PostMessage диалогу, обновляя прогресс бар. Только не споткнись на потоках (см. мой вопрос ниже)
Здравствуйте, teran2000, Вы писали:
Во-первых не стоит в данной ситуации наследовать CMy777Dlg от CSerialPort. Нужно включить CSerialPort в качестве мембера.
А CProgressCtrl, видимо, надо передать в program() в качестве параметра.
class CSerialPort
{
public:
virtual int program(CProgressControl& control)
{
...
control.SetPos(...);
...
}
}
class CMy777Dlg : public CDialog
{
public:
...
void prog()
{
Progress1.SetRange(0,sss); sss это количество записываемых байтов
Progress1.SetPos(0);
m_serialPort.program(m_Progress1);
}
}
private:
CProgressCtrl m_Progress1;
СSerialPort m_serialPort;
}
оч. благодарен!