关于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类中..
试过直接调用 也是不行, 一样的错误信息
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中,那还用发送消息干嘛?
直接用函数调用就行了。
没有指明句柄,它不知道发消息到哪儿