关于sendmessage()的问题..

来源:百度知道 编辑:UC知道 时间:2024/05/05 03:40:50
这是我的一个自建函数
void CMyViewEx::Test()
{
int i;
CRFA rfa;
int XCoordinate = rfa.final_path[0][i];
int YCoordinate = rfa.final_path[1][i];

SendMessage(
UWM_NEW_COORD,
XCoordinate,
YCoordinate
);

}

当我在CMyViewEx::OnEraseBkgnd(CDC* pDC)呼叫这个函数的时候, 可以顺利调试通过..
BOOL CMyViewEx::OnEraseBkgnd(CDC* pDC)

{
CRect rectClient;
GetClientRect (rectClient);

CDrawManager dm(*pDC);
dm.DrawArena(rectClient);
Test();
return TRUE;

}

但当我从另一个class中的函数int CInterface_1Dlg::transmit_final(int row, char movement[1][500]) 呼叫这个test()函数时, 调试时发现呼叫是通过的, 但到了sendmessage那里就出现错误, 运行不下去..

这是因为什么啊? 请大家帮帮忙 谢谢!
出错时的错误信息是An unhandled exception of type 'System.AccessViolationException'

句柄怎么指明啊? 响应消息的函数是在CMyViewEx类中..

试过直接调用 也是不行, 一样的错误信息

我晕,你应该这样:
CMyViewEx* pView = (CMyViewEx*)GetActiveView();
pView->SendMessage(...);
要不系统怎么知道你将消息发送个CMyViewEx了.

另一个class中获取到CMyViewEx的指针或句柄。
然后::SendMessage(句柄,UWM_......);
或者指针->SendMessage(UWM_......);

既然SendMessage和响应消息的函数都在CMyViewEx中,那还用发送消息干嘛?
直接用函数调用就行了。

没有指明句柄,它不知道发消息到哪儿