2005 年度最后一个问题,超级棘手

zhenyu362 2006-01-27 07:29:28
在cppfans网站下载了一个DirectX9 for BCB
http://www.cppfans.com/d_sdk/victordx9sdk.asp
为什么选择DirectX9for BCB,因为我想用VCL
打开一个例子EnhancedMesh,一看,里面创建窗口用的SDK,所以我添加了一个Form和一个panel
我想在panel上面画图,所以把D3Dapp的成员变量m_hWnd赋值panel->Handle
问题来了,如何把panel的WndProc设置成D3DApp的MsgProc呢?
在D3DApp.cpp里面看到一个函数
LRESULT CALLBACK g_WndProc( HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam )
{
return g_pD3DApp->MsgProc( hWnd, uMsg, wParam, lParam );
}
正好,那我也通过这个函数中转,所以下面是我的做法
#pragma package(smart_init)
#pragma resource "*.dfm"
TMainWnd *MainWnd;

LRESULT CALLBACK g_WndProc( HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam );
//---------------------------------------------------------------------------
__fastcall TMainWnd::TMainWnd(TComponent* Owner)
: TForm(Owner)
{
pnlDraw->WindowProc=pnlDrawMsgProc; //将此行注释掉就不会发生link错误

}
//---------------------------------------------------------------------------
void __fastcall TMainWnd::pnlDrawMsgProc(TMessage &Message)
{
g_WndProc(pnlDraw->Handle,Message.Msg,Message.WParam,Message.LParam);
}

但是,link的时候提示
[Linker Error] Unresolved external '__stdcall g_WndProc(void *, unsigned int, unsigned int, long)' referenced from D:\PROGRAM FILES\BORLAND\DX9BCB\SAMPLES\DIRECT3D\BIN\MAINFRM.OBJ

我晕了阿,明明函数定义在D3DApp.cpp里面,她怎么link不到呢,我该怎么办?
...全文
78 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
oldtab 2006-01-28
  • 打赏
  • 举报
回复
搞定了。那就当你是散分了。我抢一点。
zhenyu362 2006-01-27
  • 打赏
  • 举报
回复
哈哈,搞定了,原来这两个Message要过滤掉
switch(Message.Msg)
{
case WM_DESTROY:
case WM_NCDESTROY:
break;
default:
g_WndProc(pnlDraw->Handle,Message.Msg,Message.WParam,Message.LParam);
break;
}
OldProc(Message);
linkboy2004 2006-01-27
  • 打赏
  • 举报
回复
她。。。。。。。。。。。。
zhenyu362 2006-01-27
  • 打赏
  • 举报
回复
添加了
OldProc=pnlDraw->WindowProc;
pnlDraw->WindowProc=pnlDrawMsgProc;

void __fastcall TMainWnd::pnlDrawMsgProc(TMessage &Message)
{

g_WndProc(pnlDraw->Handle,Message.Msg,Message.WParam,Message.LParam);
OldProc(Message);
}
可以正常运行了,但是退出的时候还是异常,不知道哪里没处理好

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧