投稿日 | : 2006/02/25(Sat) 18:38 |
投稿者 | : Blue |
Eメール | : |
URL | : |
タイトル | : Re^5: 構造体配列転送 |
> i = wcstombs( bufa, employee.Name, MB_CUR_MAX );
> wsprintf(bufa, "iee.Name:%s", employee.Name); //employee.NameはBSTR 型文字列
おかしくないでしょうか?
bufaを上書きしていますよ。というか、意味ないような。。。
char temp[ 128 ];
char buff[ 128 ];
// 日本語ロケーションを設定
setlocale( LC_ALL, "Japanese" );
// employee.Name は BSTR型文字列なのでchar*型文字列に変換
wcstombs( temp, employee.Name, sizeof( temp ) );
// 変換した文字列を sprintf 関数で格納
sprintf( buff, "iee.Name:%s", temp );
// 表示
MessageBox( hWnd, buff, "fpAddNumbers3", MB_OK | MB_ICONINFORMATION );
それと、
> typedef struct {
> short ID;
> BSTR Name;
> short flag ;
> }SysData_LAY;
アライメントを考慮しないと、VBの構造体との位置がずれてしまいますよ。
VB側では 4バイト ずつだと思ったので、
typedef struct
{
short ID;
short flag;
BSTR Name;
} SysData_LAY;
のようにしないといけないような。
# というか、VBでshort型どうやって設定するんだっけ?
色々めんどくさいので、Cとの連携を考えるときは、VBではLong型、Cではint型で扱ったほうが無難です。
(どちらも4バイト)