C++を使用してCrystalレポート用のUFLを作成する私は、UF5SaveStateおよびUF5RestoreState関数を実装するオプションを得ています。解決する関数が存在する。私が実装しなければならないCrystal Reports UFLのUF5SaveStateおよびUF5RestoreStateのHGLOBAL戻り値
UF5SaveState機能は、この署名を持っている: -
HGLOBAL __stdcall UF5SaveState (UFTInt32u jobId)
私の問題は、私はそれを返すことが期待だ方法HGLOBALを形成するためにはわからないということです。
ドキュメントはこの唯一の言う: -
UF5SaveStateあなたのUFLは副作用と 機能を持っている場合は、この手順は のみ実施されなければならない[それは確かにありません]。ポイントでUFLから州を取得するには、 を取得するためにCrystal Reportsによって呼び出されるのが です。 Crystal Reportsのジョブ番号 が関数に渡されます。 関数は、2番目のパラメータにUFL状態のバイナリ ストリームを返し、 は、 番目のパラメータの状態のサイズを返します。
2番目と3番目のパラメータで返すことについて話しているので、私はほとんど混乱しています。私は本当に窓の人ではないので、私にはHGLOBALはボイドポインタのように見えるので、窓の人にとって意味があると思っています。
未処理の例外 - :私はそれ(CreateStreamOnHGlobal)からのストリームを作成し、その背中を渡す、のGlobalAllocの結果をみました戻って渡してみた、ただのchar *、非取り扱い例外ですべての結果を試してみました0x7c92a978 (ntdll.dll)(crw32.exe):0xC0000005: アクセス違反の書き込み場所 0x00030fa4。
私はy'allのは行く得るのを助けるために動作しないコードの塊、それが何かを期待しているため、これがあることに疑いはありませんが、何...する
: -
を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」のゼロターミネータは省略可能な3文字だけの状態を保存したいと考えています。どうすればいいですか?
私はうれしい、あまりにも... –
誰かがアイデアを持っている必要があり、他の人をfoxedだ:
ここでの「ABC」とHGLOBALを作成するための関連するコードはありますか?問題は十分に明確ではないのですか? –