OPENFILE構造体の class 化 †ここでの source 類は CMyOfn class †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 の分離 †前節まで、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 で導入が完了する。 |