在C++中调用MS Access DoCmd对象方法:旧Wrapper失效后的解决方案
在C++中调用MS Access的DoCmd对象方法问题
问题背景
我需要在C++程序中调用DoCmd对象的AddMenu()、ApplyFilter()、Beep()、BrowseTo()等所有方法。项目较为老旧,此前通过InvokeHelper调用DoCmd类的封装类实现功能,但更新MS Access后,该封装类失效,推测是接口变更导致,且无法确定封装类所依赖的文件(依赖项及导入中均无相关信息)。
此前封装类的方法示例如下:
void CWRAPPER::AddMenu(const VARIANT& MenuName, const VARIANT& MenuMacroName, const VARIANT& StatusBarText) { static BYTE parms[] = VTS_VARIANT VTS_VARIANT VTS_VARIANT; InvokeHelper(0x3e9, DISPATCH_METHOD, VT_EMPTY, NULL, parms, &MenuName, &MenuMacroName, &StatusBarText); }
我不清楚被调用方法的具体位置,想知道是否有其他在C++中调用MS Access操作的方式或可用库?
更新内容
我在MS Access目录下的msacc.olb中找到了DoCmd对象,使用VS 16.11.31通过“从类型库添加MFC类”生成了新的封装类(未通过类向导,而是从“添加新项”视图操作),即将进行测试。
内容的提问来源于stack exchange,提问作者Anton Danko
相关产品推荐
相关产品推荐

