- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
使用 C++ 为 Crystal 报表编写 UFL,我可以选择实现 UF5SaveState 和 UF5RestoreState 函数,COM 接口(interface)无法实现这些功能,从而导致存在这些函数要解决的问题。
我必须实现的 UF5SaveState 函数具有以下签名:-
HGLOBAL __stdcall UF5SaveState (UFTInt32u jobId)
我的问题是我不确定如何形成预期返回的 HGLOBAL。
文档只说了这一点:-
UF5SaveState This procedure must be implemented only if your UFL has a function with side effects [It does indeed]. It is called by Crystal Reports to obtain the state from the UFL at a given point. The Crystal Reports job number is passed to the function. The function returns the UFL state binary stream in the second parameter, and returns the size of the state in the third parameter.
我最困惑,尤其是因为它谈到在第二个甚至第三个参数中返回东西。我不是真正的 Windows 用户,所以对我来说 HGLOBAL 看起来很像一个空指针,所以我希望它对 Windows 用户更有意义。我尝试传回 GlobalAlloc 的结果,尝试从中创建一个流 (CreateStreamOnHGlobal) 并将其传回,只尝试一个 char *,所有结果都导致未处理的异常:-
Unhandled exception at 0x7c92a978 (ntdll.dll) in crw32.exe: 0xC0000005: Access violation writing location 0x00030fa4.
我毫不怀疑这是因为它在期待别的东西,但是...
一大块代码,不能仅仅帮助你们开始:-
HGLOBAL __stdcall UF5SaveState (UFTInt32u jobId)
{
ULONG bytesWritten;
HGLOBAL result = GlobalAlloc(GHND, 2048);
LPSTREAM stream = LPSTREAM();
CreateStreamOnHGlobal(result, false, &stream);
stream->Write("ABC", 3, &bytesWritten);
stream->Release();
return result;
}
那么,假设我想保存一个只有“ABC”三个字符的零终止符可选的状态,我该怎么做?
最佳答案
我在一百万年前写了一个自定义 CR 函数。 uffuncs.h 头文件包含以下定义:
HGLOBAL CR_EXPORT UF5SaveState (UFTInt32u jobId);
UFError CR_EXPORT UF5RestoreState (UFTInt32u jobId,
HGLOBAL savedState);
虽然您找到的文档很有说服力,但 HGLOBAL 还不足以持久保存在报告中。它是一个指针,当报表在另一个 session 中再次加载时,它不会正确恢复。那些神秘的额外参数将允许这样做。
这个头文件有一个 1997 年的时间戳。我只能建议您尝试查找更新版本的 uffuncs.h 头文件。不管它在哪里,我都不记得我是从哪里得到它的。网站文档和链接是完全不够的。非常典型的 CR 损失,在经历了痛苦之后,我决定不再使用 CR。
关于c++ - Crystal 报表 UFL UF5SaveState 和 UF5RestoreState 中的 GLOBAL 返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4284226/
我无法缩小这个错误的范围,但是我似乎遇到了以下问题: horizontalHeader() 的 saveState() 重启应用 修改模型使其少一列 restoreState() 现在,由于某种原
我的问题与有关方向更改后处理 WebView 的许多现有问题有关。 我知道 Activity 已被销毁,所以我使用 onSaveInstanceState() 来保存它的状态,稍后我使用 restor
本文整理了Java中cn.youngkaaa.yviewpager.YPagerAdapter.restoreState()方法的一些代码示例,展示了YPagerAdapter.restoreStat
QHeaderView 的 saveState/restoreState 有问题。我的应用程序中有几个 QTableViews。 QTableView 保存并恢复它的 QHeaderView 设置,但
我有一个拆分器,我想用 JSON 将他的状态保存在文件中。 QJsonObject mainJson; // here I have to convert QByteArray to QString
首先,我想说,我的问题已经在这里讨论过,在SO上,还有here it is .但答案并不好... 所以,这里是 问题 : 我有一个 QTableView类,带有一个简单的 model , 与 tabl
我在 Autodesk Viewer LayerManager 扩展中遇到了一个错误,该错误会破坏 restoreState 功能。我正在使用 getState 保存多层 DWG 文件的状态,并使用
如果我有这样的停靠小部件: QDockWidget *shapesDockWidget = new QDockWidget(tr("Shapes")); shapesDockWidget->setOb
我试图通过在 PagerAdapter 中实现两个方法来保存 ViewPager 的当前状态(当前位置等):restoreState() 和 saveState()。但是,就我而言,它们似乎无法正常工
我正在使用 Navigation Component处理导航,但在使用 popBackStack() 时或 onBackPressed()回到上一个 fragment 我的onViewCreated使
我已经实现了 webview saveState() restoreState() 逻辑来恢复 webview 的当前页面和历史记录,如下所示: public void onViewCreated(V
我想保存tableview的列顺序和每列是否显示。看起来 QHeaderView::saveState() 和 QHeaderView::restoreState() 做了我想要的。 我读过 docu
我正在使用 API 17 模拟器测试包含 WebView 的页面。 WebView 首先使用 GET 方法加载页面。 然后用户使用 HTTP POST 方法提交 Web 表单,这会导致加载第二个页面。
我是一名优秀的程序员,十分优秀!