hiro-****@hiro-*****
hiro-****@hiro-*****
2003年 12月 9日 (火) 10:28:20 JST
初めまして、hiro と申します。 最近、Windowsのレジストリを一切さわらず、フォルダをコピーすればどこにでも 持ち運びできる、メーラーが欲しいなぁ・・・と思っていたところにPochyに行き当たり、 少し使ってみて、「まさに求めていた物だけ」ということで、使わせて頂いております。 以後よろしくお願いします。 実際にPochyを使っていると「まさに求めていた物だけど、少し物足りない。」 「なら、自分で変更してみよう」と思い立ってしまい、Visual C++ を買ってしまいました。 深く考えなかったので、手にしたのは「Visual C++ .net version2003」 そこで、「Visual C++ .net version2003」でコンパイルする際に出たエラーを報告します。 多くはVC++6とVC++.netの非互換性によるものと思われますが、一部は「バグでは?」と 思われるものもありました。 SummaryView.cpp 692行目 data.m_encoding_type = md.GetEncodingType(i); 左辺は"base64"などを格納するCStringなのに対して右辺はBASE64(#define BASE64 (4)で 定義される)などを結果として出力するint型です。バグではないかと考えます。 switch文でintからCStringを作り出すようにしました。 DraftFrame.cpp 89行目 ON_NOTIFY HeaderView.cpp 37行目 ON_NOTIFY_REFLECT_EX MailEditView.cpp 49行目 ON_NOTIFY_REFLECT_EX MainFrm.cpp 71行目 ON_NOTIFY TextView.cpp 60行目 ON_NOTIFY_REFLECT_EX これらのマクロの最後の引数には BOOLを返り値とする関数を期待されているようですが、 Pochyでは 返り値無しの関数を指定しているようです。VC++の仕様の違いでしょうか。 試しに、それぞれの関数をBOOLを返り値にするようにし、関数の最後に return(false);を入れたところ、コンパイルできるようになりました。 DraftFrame.cpp 89行目 ON_NOTIFY MainFrm.cpp 71行目 ON_NOTIFY 上記BOOLを返り値とする関数の第一引数はNMTOOLBARA* ではなく、NMHDR*であることが 期待されているようです。NMTOOLBARA* がNMHDR*のスーパーセットのようですので、 関数の定義としてはNMHDR*を引数にして、関数内部でキャストしたところ、 コンパイルでいきるようになりました。VC++の仕様の違いでしょうか。 GpgDlg.cpp 129行目 GpgKeyListDlg.cpp 269行目 Str2Sliststack 関数の第一引数は CString & であるべきなのに対して、 bodya.GetAt(i)が const CString で変換できない・・・と怒られます。 どちらも直前で、tmps=bodya.GetAt(i);があったので、試しに Str2Sliststack(tmps,list);に変更したところ、無事コンパイルできてしまいました。 lib.cpp 296行目 cstra.GetAt(i).GetLBuffer(0) が 2overloads have no legal conversion for 'this' pointer と怒られました。そこで、 CString tmpc=cstra.GetAt(i);とし、cstra.GetAt(i).GetBuffer(0)をtmpc.GetBuffer(0)に 変えたところ、怒られなくなりました。 FolderView.cpp 470行目 DirArray.GetAt(i).GetBuffer(0) について、上記と同じ問題が発生しました。 以上の点を変更したところ、コンパイルでき、動作する実行ファイルができあがりました。 とりあえず、正しく動作しているように見えますが、上記変更が悪影響を与えていないことを 確認するまでには至っておりません。 ではでは。