ふにょい日記

ふにょ・い 2 (形)[文]ク ふにょ・し 思い通りにならない為力が入らなくなる様。[派生] ――げ(形動)――さ(名)

[MFC] CArchive のファイルを開きっぱなしにする

2006-10-21 22:00:20 | プログラミング・コンピューター

MFC を使った Document/View モデルのアプリケーションにて、 Serialize() メソッドの引数の CArchive が持っているファイルを開きっぱなしにしたいことがありました。
色々やってみた結果、CArchive が持っている CFile からファイルハンドルを取得して、それを DuplicateHandle() APIで複製し、その複製したファイルハンドルを元に新しい CFile を作ることでうまくできました。

<CODE>
// CViewXxxx コンストラクション/デストラクション

CViewXxxx::CViewXxxx() :
        file(NULL)
{
    // TODO: この位置に1度だけ呼ばれる構築用のコードを追加してください。

    /* ... */
}

CViewXxxx::~CViewXxxx()
{
    /* ... */

    delete file;
    file = NULL;

    /* ... */
}

// CViewXxxx シリアル化

void CViewXxxx::Serialize(CArchive& ar)
{
    if (ar.IsStoring())
    {
        // TODO: 格納するコードをここに追加してください。
    }
    else
    {
        // TODO: 読み込むコードをここに追加してください。

        if (file != NULL) {
            delete file;
            file = NULL;
        }

        HANDLE localFile;
        DuplicateHandle(
                GetCurrentProcess(),
                ar.GetFile()->m_hFile,
                GetCurrentProcess(),
                &localFile,
                0,
                TRUE,
                DUPLICATE_SAME_ACCESS);

        file = new CFile(localFile);
    }
}
</CODE>


ADSLつながった!

2006-10-04 18:16:04 | プログラミング・コンピューター
やったー!
ADSLつながりました!
やっとまともなネット環境が手に入りました。

電話回線のモジュラージャックが壁に一つだけあるアパートの部屋で、頼んだのは、ADSL専用型 (タイプ2) でした。
電話加入権を買うのが面倒くさそうだったのと、値段が高いと思ったので、加入電話に入ってからではなく、いきなりADSLが出来るやつにしました。
ADSL専用型だと宅内工事があるっていうので、かなりビクビクしていたのですが (借りている部屋なので壁に穴をあけたりするのだと困るので)、おじさんが謎器具をモジュラージャックに差し込んで確認するだけで終りました。
前もって送られていたモデムも設定済みで、ケーブルとかをつなぐだけでネットが使えるようになりました。

よーし、パパ、もっとブログ書いちゃうぞー!
っていうわけにはいかないのが、残念です。時間がなかったり、何だったりで。
ちなみに、パパでもありません。