Avatar billede superdan Nybegynder
03. december 2003 - 12:06 Der er 4 kommentarer og
1 løsning

Fejl i egen Cserial protokol.

Jeg har en protokol og testprogram der skal sende data via COM porten til en anden pc.

Den er originalt lavet i MFC til VC6.0.
Nu bruger jeg VC7 2003.
Den kompilerer fint under VC6 men nu får jeg følgende 2 fejl:

error C2440: 'static_cast' : cannot convert from 'void (__thiscall CMainDlg::* )(WPARAM)' to 'LRESULT (__thiscall CWnd::* )(WPARAM,LPARAM)'

error C2440: 'static_cast' : cannot convert from 'void (__thiscall CMainDlg::* )(WPARAM)' to 'LRESULT (__thiscall CWnd::* )(WPARAM,LPARAM)'

Er der nogen der kan hjælpe. Kildekoden kan hentes på:
http://www.bakmand.com/protokol/

Formålet er at få den implementeret i .NET og bruge en form til at modtage og sende data.

Håber virkelig at der er en der kan hjælpe...
Avatar billede driis Nybegynder
03. december 2003 - 12:54 #1
Uden at være nogen haj til MFC vil jeg mene at de BEGIN_MESSAGE_MAP makroer du bruger har ændret sig mellem de 2 versioner af VC++. I den nye version skal du behandle både LPARAM og WPARAM af en message, uanset at du kun bruger den ene, og desuden skal du returnere en LRESULT værdi. Derfor kan du gøre flg:


Klassedefinitionen ændres til:

class CMainDlg : public CDialog {
public:
  CMainDlg()
      : CDialog( DIALOG1 ) {}
  afx_msg BOOL OnInitDialog();
  afx_msg LRESULT OnReceiverMessage(WPARAM port,LPARAM lParam);
  afx_msg LRESULT OnSenderMessage(WPARAM port, LPARAM lParam);
  afx_msg void OnTransmit(); 
  afx_msg void OnClear();
  afx_msg void OnDestroy();
private:
  CSerial* pSerial;
 
  DECLARE_MESSAGE_MAP()
};

OnSenderMessage og OnReceiverMessage ændres:

afx_msg LRESULT CMainDlg::OnReceiverMessage(WPARAM port, LPARAM lParam)
{
  // Specify the action when a frame is received
  // Get the data from the driver an place the data
    return 0;
}

afx_msg LRESULT CMainDlg::OnSenderMessage(WPARAM port, LPARAM lParam)
{
  // Specify the action when a frame has been transmitted.
  return 0;
}

... så kan det compiles.
Avatar billede superdan Nybegynder
03. december 2003 - 13:44 #2
så kommer den med følgende fejl... main delen virker åbenbart ikke.

Ved du/nogen hvorfor???

Serial error LNK2019: unresolved external symbol _main referenced in function _mainCRTStartup

(filer kan hentes fra førnævnte link)
Avatar billede driis Nybegynder
03. december 2003 - 14:25 #3
Er du sikker på, at det er et MFC projekt ??
Avatar billede driis Nybegynder
03. december 2003 - 14:25 #4
... altså, at dit .NET projekt er indstillet til at være en MFC app.
Avatar billede bertelbrander Novice
03. december 2003 - 19:52 #5
I tidligere versioner af VC++ har funktionen også skulle være rigtig, men man fik ingen warnings/errors fra kompileren hvis de ikke var rigtige.
I normale debug versioner virkede det selv om funktionen ikke havde de rigtige argumenter, men når man satte den til at lave en release version (dvs. med optimering og uden debug information) fejlede det (ja, jeg har prøvet det mere end en gang).
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester