2007-02-22
奋斗一天没成果
今天早上突发奇想,想用D语言新增加的mixin和可变参数模板来封装Windows的DLL,结果奋斗了一天也没有结果。我原先设想的是达到类似如下伪码的水平:
顺带说一句,Walter放出了 DMD 1.007,解决了一些Bugs,语法上稍微做了一些调整。
1 //Module 模板第一个参数是DLL路径名,后跟不限个数 Proc 模板。Proc用于定义一个DLL中的函数,第一个参数为函数名,第二个为返回值类型,其余为形参。我原本想用函数编译时执行将Proc定义的DLL中的函数生成Module模板的函数指针成员字符串,再用mixin加入Module模板类定义,折腾了一天,结果最后才发现编译时函数执行不支持可变参数,真是苦恼啊,不知哪位高人有更好的解决方法。
2 Module!("User32.dll", Proc!("MessageBoxW", int, HWND, const wchar*, const wchar*, uint), Proc!("GetDesktopWindow", HWND)) user32;
3 //使用DLL中的函数:
4 user32.MessageBoxW(null, "Hello! World!", "Hello!", MB_OK);
5 HWND hdesktop = user32.GetDesktopWindow();
顺带说一句,Walter放出了 DMD 1.007,解决了一些Bugs,语法上稍微做了一些调整。
发表评论
- 浏览: 109076 次
- 性别:

- 来自: 昆明

- 详细资料
搜索本博客
我的相册
Screenshot
共 1 张
共 1 张
最近加入圈子
最新评论
-
出色的开源项目管理软件— ...
...Trac可以用python2.5啊,没有说必须用2.4的
-- by jusdao -
出色的开源项目管理软件— ...
我也是前几天刚刚从trac换到redmine,感觉好多了,trac有的redmi ...
-- by danielking -
转贴:鲁迅未收入全集的文 ...
借问酒家何处有,牧童遥指杏花村
-- by hqs7636 -
Range Coding 的 D 实现
引用oldrev 2008-01-12LZMA SDK 只是一个 LZMA 算法 ...
-- by oldrev -
D 静态数组初始化大bug
看看日期好伐?
-- by oldrev






评论排行榜