深夜等解答!跪求
Cooki 2012-08-15 12:56:52 具体题目是
这是一公司的面试题学习之用下载研究,但水平低不太懂。C++ , VC++ 的书也看过好几大本了.一般的DLL应用知道 但下面这一行:
bool dll_init(IBox * p_in/*IN*/, IController ** p_out/*OUT*/);
内部怎么实现,跟界面按钮如何关联起来,实在搞不明白!请高手编写个简单的代码,每个按钮只响应一个提示也行,明白了思路后我自己再去仔细研究. (还请大家提供一些参考资料方便学习)
感谢!
测试题:
请编写一个dll,这个dll能与我们提供的exe(初试D.exe)工作,在exe的界面上绘制我们提供的图片test.jpg,并且,能够通过主界面的按钮上下左右的移动界面上的图片。
提示:下面是我们的示例程序运行的效果图,你写的Dll中不需要写上“这是示例程序”那几个红色的文字。
需要的借口在interface.h中有定义。
示例程序是用vs2003编写。
例子图片你可以转化为bmp后再使用。
图片一次移动距离自己定,示例程序用的是5。
注:请提供程序源代码
interface.h文件
#pragma once
interface IController
{
virtual void draw(HWND wnd, RECT & rc) PURE;
virtual void on_btn_up_pressed() PURE;
virtual void on_btn_left_pressed() PURE;
virtual void on_btn_right_pressed() PURE;
virtual void on_btn_down_pressed() PURE;
};
//IBox接口由我们提供的exe实现,在调用你导出函数时,把IBox指针传给你
//你需要实现IController
interface IBox
{
virtual HWND getWND() PURE;
virtual RECT getDrawRect() PURE;
};
//dll提供的导出函数原型
typedef bool (*dll_entry_type)(IBox * p_in/*IN*/, IController ** p_out/*OUT*/) ;
extern "C" __declspec(dllexport) bool dll_init(IBox * p_in/*IN*/, IController ** p_out/*OUT*/);
试题下载地址:www.tigou.net/downloads/cx.rar
在说说我的情况,一切都完成的差不多了,就初始化图片的函数有问题,
情况是这样的
interface IBox
{
virtual HWND getWND() PURE;
virtual RECT getDrawRect() PURE;
};
void Controller::InitControl( IBox * p_in )
{
this->m_pBox = p_in;
HINSTANCE hInstance = hInst;//就是这里如何得到模块实例的句柄,如何通过IBOX传来的信息知道呢???
m_Bitmap = LoadBitmap(hInstance, (LPCWSTR)IDB_BITMAP);
//还有这里是通过文件名来加载图片吗?比如LoadBitmap(hInstance, (LPCWSTR)IDB_BITMAP1);
//图片资源已经加载进去,但是'IDB_BITMAP1' : undeclared identifier
//哪里有什么问题求大神指导,感激不尽啊!!
m_Sizecx = 0;
m_Sizecy = 0;
}