|
一般ユーザのkikiです。
いつもお世話になります。
>
>>1.先に要望(過去形)
>> 変換モジュールでエラーなどで上位関数へのリターンする時、
>> 毎回GlobalAllocして、入力文字列を複写して返さなければ
>> いけない。
>> 可能なら、処理正常か失敗かのフラグを返すだけにさせて
>> もらえると楽だった・・・。
>> (インタフェースの変更は難しいですね。)
>
>NULLを返すと何もしないはずです。
>どうでしょうか。
そうだったんですか・・・。^^;
||if( hmemConv == NULL ) {
|| return NULL;
||}
おおっ! ^^;
>
>
>>2.次も要望(現在進行形)
>> 秀丸エディタへのメッセージが、TAB関連しか分からない。
>> (HIDEMARUINFO_GETTABWIDTHなど。)
>>
>> 可能なら、他の秀丸エディタの設定値を取得するメッセージ
>> や、タブ→空白変換の処理を呼ぶメッセージが知りたかった。
>
>もともとあった変換のタブ→空白変換のためにそれら関係のだけがあります。
>変換モジュールだけのために全ての設定の取得をサポートするのは大変なので、
>要望があれば要望の対応と、もし汎用的なものがあったほうがよさそうであれば
>変換モジュールだけのためでなく、他の方法も考えたほうがいいかもしれません。
>
これはもう、「かなぁ〜?」とか思っていたので、了解しました。
「おお、秀丸エディタがメッセージを受け取ってくれる!」と
ちょっと踊ってしましました。
厳密にはメッセージ自体じゃなくて、パラメータのフラグですね。
メッセージのヘッダが見れると嬉しいけど、無茶言いません。^^;
(既に言いまくりでした。m(_ _)m)
>>3.文字コード
>> プログラム自体はS-JISで開発だったのですね・・・。
>> コンパイルオプションを、_MBCSから_UNICODEへ変更して
>> 「楽チン〜」って喜んでたら、処理後にリターンして落ち
>> ました。T.T
>> (歴史があるのだから、そらそーか。)
>
>Unicodeでもできるはずです。
>というか変換の関数はUnicodeでの入力で、出力もUnicodeでないと
>まずいと思うのですが、どこか問題でしょうか。
これもう、完全に「まずい」ですね。^^;
I/OともにUNICODEで扱って無いと、バケバケでした。
(改行とかも0x0D,0x0Aと別々になっていたし・・・。^^;)
コンパイルオプションは_MBCSのまま、以下の対応しています。
(文字列取得時)
||// 文字列変換 ワイドバイトを取得
||CString strDispString;
||// ↓ これ、大丈夫だと思うけど。^^;
||// 0x0D,0x0Aは別々に確保されるです。
||strDispString = pwszIn;
:
(文字列返却時)
||// 変換桁取得
||iLen = strDispString.GetLength();
||// リターン用の領域確保
||hmemConv = AllocMemSub( (iLen + 1)*2, hwndHidemaru );
||if( hmemConv == NULL ) {
|| return NULL;
||}
||// メモリ操作開始
||pwchDest = (WCHAR*)GlobalLock( hmemConv );
||
||// 文字列変換 ワイドバイトへ返す。
||_mbstowcsz( pwchDest, (LPCTSTR)strDispString, iLen + 1 );
||// メモリ操作終了
||GlobalUnlock( hmemConv );
||// RETURN.
||return hmemConv;
>試しに作ってみたところ、いちおうできました。
>いろいろ見てみたら、pszExportName, pszNameJapan, pszNameUs はUnicodeでは
>なかったです。ここが問題でしょうか?
どうも、コンパイルオプションを_MBCSから_UNICODEにすると、
struct HIDEMARUFILTERINFO aFilterInfo[14] = {
{ sizeof(HIDEMARUFILTERINFO), "HanZenConv", "半角/全角変換...", "Hankaku/Ze
nkaku convert...", 'H', 0, 0, 0 },
{ 0, NULL, NULL, NULL, NULL, 0, 0, 0 }
};
この辺が怪しくなるような気が・・・。
(ん? って同じこと言っていますね? ^^;)
最初、DEBUG実行すると落ちる。T.T
で、上記を""とかってしたらOKでした。
やってみてのお話なので、本当に大丈夫かは全然怪しいですが。
>
>>4._cdeclが必要・・・?
>
>コンパイルオプションで_cdeclになっていればいいですが、_cdeclです。
了解しました。
以上です。
PS.
げげっ!
タブの空白対応忘れてた。
(その内・・・。)
|
|