|
|
|
Help NEEDED! вопрос знатокам MSVC .
|
|||
|---|---|---|---|
|
#18+
Подскажите, пожалуйста как мне передать данные в данной ситуации? Пол дня бьюсь и как о стену..... Есть класс, объявленный в header, пусть будет 1.h: class CComTestDlg : public CDialog { // Construction public: CComTestDlg(CWnd* pParent = NULL); // standard constructor // Dialog Data //{{AFX_DATA(CComTestDlg) enum { IDD = IDD_COMTEST_DIALOG }; // CButton m_OK; CEdit m_TransmitText; //transmit data CEdit m_ReceiveText; CButton m_Connect; //connect to port CButton m_Listen; //recieve data CSpinButtonCtrl m_ComSpin; CEdit m_Com; CEdit m_Prn; CEdit m_Snr; CEdit m_utc_time; CEdit m_lattitude; CEdit m_longitude; //}}AFX_DATA // ClassWizard generated virtual function overrides //{{AFX_VIRTUAL(CComTestDlg) protected: virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support //}}AFX_VIRTUAL // Implementation protected: // Generated message map functions //{{AFX_CComTestDlg virtual BOOL OnInitDialog(); virtual void OnCancel(); virtual void OnOK(); afx_msg void OnConnect(); afx_msg void OnTimer(UINT nIDEvent); afx_msg void OnListen(); afx_msg void OnRefresh(); //}}AFX_MSG DECLARE_MESSAGE_MAP() }; Есть 1.срр: // здесь связываем ID полей ввода на форме с переменными void CComTestDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CComTestDlg) // DDX_Control(pDX, IDOK, m_OK); DDX_Control(pDX, IDC_TRANSMITTEXT, m_TransmitText); DDX_Control(pDX, IDC_RECEIVETEXT, m_ReceiveText); DDX_Control(pDX, IDC_CONNECT, m_Connect); DDX_Control(pDX, IDC_COM_SPIN, m_ComSpin); DDX_Control(pDX, IDC_COM, m_Com); DDX_Control(pDX, IDC_PARCED_PRN, m_Prn); DDX_Control(pDX, IDC_PARCED_SNR, m_Snr); DDX_Control(pDX, IDC_PARCED_UTC_TIME, m_utc_time); DDX_Control(pDX, IDC_LATTITUDE, m_lattitude); DDX_Control(pDX, IDC_LONGITUDE, m_longitude); // DDX_Control(pDX, IDC_LISTEN, m_Listen); //}}AFX_DATA_MAP } // Есть метод // Вот он то мне и нужен!!! void CComTestDlg::OnOK() { if (IsCOMStarted ()) { CString s; m_TransmitText.GetWindowText (s); s += "\r\n"; Transmit ((LPBYTE) (LPCTSTR) s, s.GetLength (),m_hWnd); m_ReceiveText.SetWindowText (s); } int i; CString convert; for(i=0;i<=11; i++) { // Отображаем PRN и SNR, если PRN =='FF' if (NMEA_SAT .PRN =='FF') { convert=(LPSTR)(NMEA_SAT.PRN); m_Prn.SetWindowText(convert); convert=(LPSTR)(NMEA_SAT.SNR); m_Snr.SetWindowText(convert); } } // Время convert=(LPSTR)UTC_HOUR; convert +=":"; convert +=(LPSTR)UTC_MINUTE; convert +=":"; convert +=(LPSTR)UTC_SECOND; m_utc_time.SetWindowText(convert); // Широта convert=(LPSTR)Lattitude_Deg; convert +=":"; convert +=(LPSTR)Lattitude_Min; convert +=":"; convert +=(LPSTR)Lattitude_Sec; m_lattitude.SetWindowText(convert); // Долгота convert=(LPSTR)Longitude_Deg; convert +=":"; convert +=(LPSTR)Longitude_Min; convert +=":"; convert +=(LPSTR)Longitude_Sec; m_longitude.SetWindowText(convert); } // Есть стдкол DWORD __stdcall ThrProc (LPVOID param) { DWORD d; COMSTAT stat; while (!needCloseWindow) { // Try to get a lock on the transmit mutex if (WaitForSingleObject (hTransmitMutex, 3000) == WAIT_OBJECT_0) { // Success. Let's see if we have something to transmit if (dataToTransmit && (dataToTransmitSize > 0)) { WriteFile (hComm, dataToTransmit, dataToTransmitSize, &d, NULL); dataToTransmitSize -= d; } // Release the mutex ReleaseMutex (hTransmitMutex); } // Receive ClearCommError (hComm, &d, &stat); if (stat.cbInQue > 0) { Recv(); NMEA_GPS_RECIEVE_DATA(Recv()); //CComTestDlg::OnOK(); } } ВОПРОС: КАК МНЕ ВЫЗВАТЬ CComTestDlg::OnOK() в DWORD __stdcall ThrProc (LPVOID param) ???? Объясните плиз, а то как в бетонную стену ломлюсь! Есть подозрение, что нужно передавать указатель OnOk, только как это сделать не представляю... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.09.2005, 01:08 |
|
||
|
Help NEEDED! вопрос знатокам MSVC .
|
|||
|---|---|---|---|
|
#18+
Anton M.Подскажите, пожалуйста как мне передать данные в данной ситуации? Пол дня бьюсь и как о стену..... Есть класс, объявленный в header, пусть будет 1.h: class CComTestDlg : public CDialog { // Construction public: CComTestDlg(CWnd* pParent = NULL); // standard constructor // Dialog Data //{{AFX_DATA(CComTestDlg) enum { IDD = IDD_COMTEST_DIALOG }; // CButton m_OK; CEdit m_TransmitText; //transmit data CEdit m_ReceiveText; CButton m_Connect; //connect to port CButton m_Listen; //recieve data CSpinButtonCtrl m_ComSpin; CEdit m_Com; CEdit m_Prn; CEdit m_Snr; CEdit m_utc_time; CEdit m_lattitude; CEdit m_longitude; //}}AFX_DATA // ClassWizard generated virtual function overrides //{{AFX_VIRTUAL(CComTestDlg) protected: virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support //}}AFX_VIRTUAL // Implementation protected: // Generated message map functions //{{AFX_CComTestDlg virtual BOOL OnInitDialog(); virtual void OnCancel(); virtual void OnOK(); afx_msg void OnConnect(); afx_msg void OnTimer(UINT nIDEvent); afx_msg void OnListen(); afx_msg void OnRefresh(); //}}AFX_MSG DECLARE_MESSAGE_MAP() }; Есть 1.срр: // здесь связываем ID полей ввода на форме с переменными void CComTestDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CComTestDlg) // DDX_Control(pDX, IDOK, m_OK); DDX_Control(pDX, IDC_TRANSMITTEXT, m_TransmitText); DDX_Control(pDX, IDC_RECEIVETEXT, m_ReceiveText); DDX_Control(pDX, IDC_CONNECT, m_Connect); DDX_Control(pDX, IDC_COM_SPIN, m_ComSpin); DDX_Control(pDX, IDC_COM, m_Com); DDX_Control(pDX, IDC_PARCED_PRN, m_Prn); DDX_Control(pDX, IDC_PARCED_SNR, m_Snr); DDX_Control(pDX, IDC_PARCED_UTC_TIME, m_utc_time); DDX_Control(pDX, IDC_LATTITUDE, m_lattitude); DDX_Control(pDX, IDC_LONGITUDE, m_longitude); // DDX_Control(pDX, IDC_LISTEN, m_Listen); //}}AFX_DATA_MAP } // Есть метод // Вот он то мне и нужен!!! void CComTestDlg::OnOK() { if (IsCOMStarted ()) { CString s; m_TransmitText.GetWindowText (s); s += "\r\n"; Transmit ((LPBYTE) (LPCTSTR) s, s.GetLength (),m_hWnd); m_ReceiveText.SetWindowText (s); } int i; CString convert; for(i=0;i<=11; i++) { // Отображаем PRN и SNR, если PRN =='FF' if (NMEA_SAT .PRN =='FF') { convert=(LPSTR)(NMEA_SAT.PRN); m_Prn.SetWindowText(convert); convert=(LPSTR)(NMEA_SAT.SNR); m_Snr.SetWindowText(convert); } } // Время convert=(LPSTR)UTC_HOUR; convert +=":"; convert +=(LPSTR)UTC_MINUTE; convert +=":"; convert +=(LPSTR)UTC_SECOND; m_utc_time.SetWindowText(convert); // Широта convert=(LPSTR)Lattitude_Deg; convert +=":"; convert +=(LPSTR)Lattitude_Min; convert +=":"; convert +=(LPSTR)Lattitude_Sec; m_lattitude.SetWindowText(convert); // Долгота convert=(LPSTR)Longitude_Deg; convert +=":"; convert +=(LPSTR)Longitude_Min; convert +=":"; convert +=(LPSTR)Longitude_Sec; m_longitude.SetWindowText(convert); } // Есть стдкол DWORD __stdcall ThrProc (LPVOID param) { DWORD d; COMSTAT stat; while (!needCloseWindow) { // Try to get a lock on the transmit mutex if (WaitForSingleObject (hTransmitMutex, 3000) == WAIT_OBJECT_0) { // Success. Let's see if we have something to transmit if (dataToTransmit && (dataToTransmitSize > 0)) { WriteFile (hComm, dataToTransmit, dataToTransmitSize, &d, NULL); dataToTransmitSize -= d; } // Release the mutex ReleaseMutex (hTransmitMutex); } // Receive ClearCommError (hComm, &d, &stat); if (stat.cbInQue > 0) { Recv(); NMEA_GPS_RECIEVE_DATA(Recv()); //CComTestDlg::OnOK(); } } ВОПРОС: КАК МНЕ ВЫЗВАТЬ CComTestDlg::OnOK() в DWORD __stdcall ThrProc (LPVOID param) ???? Объясните плиз, а то как в бетонную стену ломлюсь! Есть подозрение, что нужно передавать указатель OnOk, только как это сделать не представляю... Я, конечно, не "волшебник, а только учусь" (С, не моё)... Но что-то я не вижу в функции ThrProc объявления экземпляра класса CComTestDlg или его наследника... А без этого функцию-член класса не вызовешь... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.09.2005, 06:47 |
|
||
|
Help NEEDED! вопрос знатокам MSVC .
|
|||
|---|---|---|---|
|
#18+
Всегда считал свинством постить исходик и спрашивать "ну че тут не так то" !? Если человек не может правильно сформулировать вопрос, без поста исходников, то он просто лентяй, и сидет ему еще год над эти кодом. Все ИМХО. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.09.2005, 07:42 |
|
||
|
Help NEEDED! вопрос знатокам MSVC .
|
|||
|---|---|---|---|
|
#18+
Mr.BubaВсегда считал свинством постить исходик и спрашивать "ну че тут не так то" !? Если человек не может правильно сформулировать вопрос, без поста исходников, то он просто лентяй, и сидет ему еще год над эти кодом. Все ИМХО. Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.09.2005, 08:33 |
|
||
|
Help NEEDED! вопрос знатокам MSVC .
|
|||
|---|---|---|---|
|
#18+
Mr.BubaВсегда считал свинством постить исходик и спрашивать "ну че тут не так то" !? Если человек не может правильно сформулировать вопрос, без поста исходников, то он просто лентяй, и сидет ему еще год над эти кодом. Все ИМХО. Кто то глумится, а кто то помогает. Излагаю мысли как могу, комменты к сырцам и вопрос озвучил. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.09.2005, 09:10 |
|
||
|
Help NEEDED! вопрос знатокам MSVC .
|
|||
|---|---|---|---|
|
#18+
Станислав C. Я, конечно, не "волшебник, а только учусь" (С, не моё)... Но что-то я не вижу в функции ThrProc объявления экземпляра класса CComTestDlg или его наследника... А без этого функцию-член класса не вызовешь... Спасибо! Так и сделал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.09.2005, 10:28 |
|
||
|
|

start [/forum/topic.php?fid=57&gotonew=1&tid=2032775]: |
0ms |
get settings: |
10ms |
get forum list: |
19ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
83ms |
get topic data: |
11ms |
get first new msg: |
7ms |
get forum data: |
3ms |
get page messages: |
63ms |
get tp. blocked users: |
2ms |
| others: | 248ms |
| total: | 454ms |

| 0 / 0 |
