Ik heb in VB:
In C++ ziet het er zo uit:
Deze p1 word juist ontvangen in C++ (als een ANSI string).
De webpagina beschreven in p1 word afgehaald (in een char*) als een ANSI-string.
Dan moet die SysAlloc.. etc code normaal een BSTR van die Pagina1.Buffer maken.
Maar dan word het raar. Als ik in VB even met mijn muis over p1 ga (na uitvoering van deze functie) staat daar tussen elk character een blokje tussen. Zeer waarschijnlijk is dit een UNICODE string geworden. Maar waar is die opeens van ANSI->UNICODE geworden? En hoe kan ik het aanpassen dat die die in VB als een "normale" string ziet (dus zonder die blokjes)?
Visual Basic:
1
2
3
4
5
| Private Function Declare Loadpage lib "Dll.dll"( ByRef Stri$ ) as long Dim p1$ p1 = "/index.php" Loadpage(p1) |
In C++ ziet het er zo uit:
C++:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
| HRESULT __stdcall Loadpage(BSTR* page1) { // Allerlei dingen // ... if ( Page1 ) { SysFreeString( *Page1 ); #ifndef UNICODE *Page1 = SysAllocStringLen( 0, strlen( Pagina1.Buffer ) ); size_t size = mbstowcs( 0, Pagina1.Buffer, strlen(Pagina1.Buffer) + 1 ); mbstowcs( *Page1, Pagina1.Buffer, size ); #else *Page1 = SysAllocString( Pagina1.Buffer ); #endif delete Pagina1.Buffer; } |
Deze p1 word juist ontvangen in C++ (als een ANSI string).
De webpagina beschreven in p1 word afgehaald (in een char*) als een ANSI-string.
Dan moet die SysAlloc.. etc code normaal een BSTR van die Pagina1.Buffer maken.
Maar dan word het raar. Als ik in VB even met mijn muis over p1 ga (na uitvoering van deze functie) staat daar tussen elk character een blokje tussen. Zeer waarschijnlijk is dit een UNICODE string geworden. Maar waar is die opeens van ANSI->UNICODE geworden? En hoe kan ik het aanpassen dat die die in VB als een "normale" string ziet (dus zonder die blokjes)?