[[Page009]]
* OPENFILE構造体の class 化 [#cef8277f]
ここでの source 類は&ref("myapp10.tgz");としてある。
** CMyOfn class [#s08ccd97]
Windows での「ファイルを開く」user interface は OPENFILE構造体を設定して、GetOpenFileName() 関数を呼び出すのが標準的である。またこの構造体は GetSaveFileName() 関数にも用いられ、「名前を付けて保存」の標準 user interface としても使われる。
そこで、OPENFILE構造体を隠蔽する clsss、CMyOfn classs を導入する。上記理由から、この class は member function として GetOpenFileName と GetSaveFileName を持つ。
// myofn.h
#ifndef MYOFN_H_INCLUDED
#define MYOFN_H_INCLUDED
#include <windows.h>
#include <tchar.h>
namespace mylib
{
class CMyOfn
{
public:
CMyOfn();
virtual ~CMyOfn();
BOOL GetOpenFileName();
BOOL GetSaveFileName();
const TCHAR* FileName() const;
private:
static const int MAX_FILENAME = 1024;
protected:
OPENFILENAME m_ofn;
TCHAR m_szFileName[(MAX_FILENAME + 1)];
TCHAR* m_strFilter;
};
} // namespace mylib
#endif // MYOFN_H_INCLUDED
** jpeg library の分離 [#n474e4b4]
前節まで、jpeg library を一緒に梱包していたが、この節からは別途systemに用意してあるものとして扱う。
MingW/MSYS で、jpeg library を導入すると、jmorecfg.h の boolean と rpcndr.h の boolean と conflict を起こす。HAVE_BOOLEAN を定義することで、compile 時の error は防げるが library と不整合を起こす。jmorecfg.h の boolean を rpcndr.h の boolean に一致するようにすべきである。筆者の環境では
typedef unsigned char boolean;
とした。
上記変更を行った後、MSYS 環境で
./configure --prefix=/mingw --disable-shared
を行い、
make
make install
make install-lib
で導入が完了する。