Direct2d を使用する場合、次の関数が存在します。
HRESULT WINAPI D2D1CreateFactory(
_In_ D2D1_FACTORY_TYPE factoryType,
_In_ REFIID riid,
_In_opt_ const D2D1_FACTORY_OPTIONS *pFactoryOptions,
_Out_ void **ppIFactory
);
上記のメソッドが戻ると、ppIFactory には新しいファクトリへのポインタへのアドレスが含まれているため、このファクトリを使用できます。
同様のことをしたかったので、MessageLog.h に次のように記述しました。
void CreateMessageLog(MessageLog**);
class MessageLog{
public:
void PutToLog(WCHAR[]);
WCHAR* GetLog();
int GetLogLenght();
int GetnLogLines();
private:
WCHAR logHistory[MaxLogSize];
int nLogLines;
};
そして、これを MessageLog.cpp に:
void CreateMessageLog(MessageLog** ppMessageLog)
{
MessageLog mLog;
MessageLog* pmLog=&mLog;
ppMessageLog=&pmLog;
}
これが完了したので、いくつかの問題があります。まず、CreateMessageLog 関数が終了すると、作成された MessageLog オブジェクトはスコープ外になり、ポインタは NULL になりますよね? この問題の解決策は何ですか?
ところで、私の CreateMessageLog 関数は期待どおりの動作をしないと思います。また、その問題の解決策は何ですか?ありがとう。