String statt DWORD
-
Hallo. Ich wollte statt meinem DWORD einen String der Form (12345678-ABCD-QRST-UVWX-12345678) übergeben.
In der InfoDlg.cpp habe ich:
CInfoDlg::CInfoDlg() : m_csCaption(_T("Hier Caption")), m_dwApp(0), m_pDlg(NULL) { } STDMETHODIMP CInfoDlg::get_Info(long *pVal) { AFX_MANAGE_STATE(AfxGetStaticModuleState()) if (!pVal) return E_POINTER; *pVal = (long)m_dwApp; return S_OK; } STDMETHODIMP CInfoDlg::put_Info(long newVal) { AFX_MANAGE_STATE(AfxGetStaticModuleState()) m_dwApplication = (DWORD)newVal; return S_OK; }Bei der ShowMe taucht die folgende Zuweisung auf, die aber glaube keine Bedeutung für den String hat.
STDMETHODIMP CInfoDlg::ShowMe(long *pVal) { ... m_pDlg->m_dwApp = m_dwApp; }In der InfoDlg wird der Wert unter protected aufgeführt.
protected: DWORD m_dwApp;Der Wert wird dann in der InfoQuell verarbeitet. Bzw. hier ermittle ich auch diverse andere Informationen, wie Copyright, CompanyName, Version usw.
CInfoQuell::CInfoQuell(CWnd* pParent /*=NULL*/) :CDialog(CInfoQuell::IDD, pParent), m_csCaption(_T(data.Title)), m_dwApp(0), m_hIcon(NULL), m_hWndParent(NULL)In der InfoQuell.h wird der Wert unter public geführt.
public: DWORD m_dwApp;Jetzt hab ich schon probiert in den *.h das in CString zu ändern und statt long BSTR oder CString bzw. std::string Aufrufe zu tätigen. Aber alles war immer mit Fehlern behaftet.
Wäre nett, wenn mir jemand einen Hinweis geben könnte. Oder eine gute Seite zur Typendeklaration. Weil das was ich da probiert habe, war eher trail & error.
Danke schonmal für jede Art von Hilfe.
-
Alexiel schrieb:
Hallo. Ich wollte statt meinem DWORD einen String der Form (12345678-ABCD-QRST-UVWX-12345678) übergeben.
Das wird ein bisschen eng, denn 32 Byte passen nicht in 4 Byte rein.
Du könntest aber den String in 8 DWORDs aufteilen:void _32ByteString2_8Dword ( char buf[33], DWORD* dw8 ) { char* pstr = buf; char* p = (char*)dw8; while(*pstr) *p++ = *pstr++; } void _8Dword2String( DWORD* dw8, char buf[33] ) { int i; char* p = (char*)dw8; char* pstr = buf; for ( i=0; i<32; i++ ) pstr[i] = p[i]; } int main() { char str[33] = "12345678-ABCD-QRST-UVWX-12345678"; char result[33]={0}; DWORD dw[8]; _32ByteString2_8Dword( str, dw ); _8Dword2String( dw, result ); puts(result); }