首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > PB >

问个C语言的结构体和PB怎么兼容的有关问题

2012-07-29 
问个C语言的结构体和PB如何兼容的问题。我有个模块是用VC写的DLL,在里面我向PB程序的窗口发送了 WM_COPYDAT

问个C语言的结构体和PB如何兼容的问题。
我有个模块是用VC写的DLL,在里面我向PB程序的窗口发送了 WM_COPYDATA 消息。
消息中自定义部分是一个自定义的结构体,在VC下是这样的:

C/C++ code
typedef struct _MSG_TYPE{    DWORD MsgType;} MSG_TYPE, *PMSG_TYPE;typedef struct _UC_MSG{    MSG_TYPE MsgType;    char OppoAccount[128];             char OppoNickName[128];           char Content[4096];            } UC_MSG, *PUC_MSG;


WM_COPYDATA 由PB程序处理,请问处理时应该怎么分析这个结构,如何在PB中定义一个与之兼容的结构?谢谢。

[解决办法]
pb定义结构

ypedef struct MSG_TYPE
{
long MsgType;
}

typedef struct _UC_MSG
{
MSG_TYPE MsgType;
string OppoAccount
string OppoNickName
srrint Content


这样试试,在PB中使用结构体的时候,要给string预先分配内存空间
[解决办法]
dll 发消息给pb 的时候,结构恐怕不能直接传送。。改为传送 地址。。在pb中得到地址后 再通过地址得到结构内容。。。如果是 传的结构,,可参照楼上。。
[解决办法]
窗口的other事件
Long ll_msg
String ls_test
str_copydatastruct lstr_data

SetNull(ll_msg)
ll_msg = Message.Number
IF ll_msg = WM_COPYDATA THEN
CopyMemory(lstr_data,lparam,12)
ls_test = String(lstr_data.lpdata,"Address")
mle_out.text=mle_out.text+' < <: '+ls_test+char(13)+char(10)
mle_out.text=mle_out.text+'--------------------------------'+char(13)+char(10)
mle_out.SelectText(Len(Mle_out.text)+1, 0)
SetNull(lstr_data.dwdata)
SetNull(lstr_data.cbdata)
SetNull(lstr_data.lpdata)
SetNull(ls_test)
END IF

pb 程序间的发送与接收 wm_copydata

http://download.csdn.net/source/1516725

热点排行