< October 2005 | December 2005 | January 2006 >

December 26, 2005

ログクラス

めもめも。
続きを読む...

.NET の属性を使用して、Enum と Struct をタイプライブラリに含める方法

.NET で ATL を使用して COM DLL を作成しようとして・・・唖然としました。VC++ 6.0 で ATL COM ウィザード使ってたときと全く生成されるコードが違う・・・。一番の大きな違いは「属性」なるものが追加されたこと。宣言の前に大カッコでくくって指定するようです。

なんとか COM DLL を作り上げて、実装担当者に渡したところ、enum や struct をタイプライブラリにどうやって含めたのか聞かれました。これは私もドキュメントが見つけられず、試行錯誤ののち実装したもの。一応、以下のようにするとできますが、この方法で正しいのかわからない部分です。

#ifndef __EXPORTS__H
#define __EXPORTS__H

[
    export,         // タイプライブラリにエクスポートします
    v1_enum,        // 32bit 値の列挙型としてコンパイルします
    library_block,  // タイプライブラリの library ブロック内に配置します
    helpstring ("この enum は、タイプライブラリに含まれます。"),
]
enum ExportEnum
{
    nExportEnumValue1,
    nExportEnumValue2,
    nExportEnumValue3,
};

[
    export,         // タイプライブラリにエクスポートします
    library_block,  // タイプライブラリの library ブロック内に配置します
]
struct EXPORT_STRUCT
{
    long            nExportStructMember1;
    BYTE            ExportStructMember2 [10];
    VARIANT_BOOL    bExportStructMember3;
    BSTR            bstrExportStructMember4;
};


#endif  //__EXPORTS__H

December 18, 2005

Socket サンプル

VB で Winsock コントロールを使って、TCP あるいは UDP で通信するサンプルです。
確か、TCP と UDP のそれぞれで、ネットワークアドレスの競合が起こった時に、通信はどうなるかを検証するのに使ったんだったと思います。ていうか、そういうテストにしか使えません。VB6 用。
Download file

API でちっちゃい文字をつぶれないように描くサンプル

HDD のお掃除をしていると、テストのために作ったソースとかごちゃごちゃ出てきます。これはその一つ。ちっちゃい字をスムージングをかけて縮小して出力します。

20051218stretchblt_font.png

続きを読む...

December 5, 2005

ナチュラルインプットを抹殺する

Office Xp からかな? Word を使おうとすると、日本語入力システムが頼みもしないのにナチュラルインプットに切り替わってしまうようになりました。 これ、何とかならないの?と思って、あれこれ設定をいじくっていたのですが、とりあえず、完全抹殺の方法は見つけました。

  1. 日本語入力が可能な状態で、IMEツールバーを右クリックし、「プロパティ」を選択
  2. 「互換性」タブを表示する
  3. 「詳細なテキストサービスを使用しない」を選択する
  4. OKボタンを押下すると、再起動するか聞かれるので、再起動する

これで、文書の編集中に気づいたらナチュラルインプットになってしまっていて混乱することはなくなります。ただし、入力システムの選択肢から、ナチュラルインプットが完全に消えてしまい、たとえば Microsoft IME と ATOK のように一時的に切り替えて使用する、というようなこともできなくなります。両方が使える状態で、デフォルトをナチュラルインプット以外の入力システムにする方法は、まだ見つけられていません。