VB6.0用掲示板の過去のログ(No.2)−VBレスキュー(花ちゃん)
[記事リスト] [新規投稿] [新着記事] [ワード検索] [管理用]

投稿日: 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バイト)


- 関連一覧ツリー (★ をクリックするとツリー全体を一括表示します)

- 返信フォーム (この記事に返信する場合は下記フォームから投稿して下さい)

- VBレスキュー(花ちゃん) - - Web Forum -