[[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

で導入が完了する。

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS