mfc-ml

2003年07月

31

[mfc 45632] Re: [mfc 45622] ClearCommError関数の第二引数の使い方が分かりません。

おだです。

> ClearCommError関数は
>
> BOOL ClearCommError(
> HANDLE hFile, // シリアルポートへのハンドル
> LPDWORD lpErrors, // エラーを報告するDWORD型変数へのポインタ
> LPCOMSTAT lpStat // COMSTAT構造体へのポインタ
> );
>
> ですが、第二引数の使い方がわかりません。よかったら丁寧に教えてもらえません

> ?

こんな感じになると思います。

HANDLE       hFile;
DWORD        dwError;
COMSTAT    comStat;
    ・
    ・
    ・
if( ClearCommError( hFile, &dwError, &comStat ) ) {
    if( dwError & CE_BREAK ) {
        // ハードウェアがブレーク条件を検出しました。
    }
    if( dwError & CE_FRAME ) {
        // ハードウェアがフレーミングエラーを検出しました。
    }
    ・
    ・
    ・

} else {
    // ClearCommError()関数呼出エラー
}
31

[mfc 45631] Re: SHIFTキー+テンキーの状態取得

吉本です。

T.Sawamoto wrote:
> さあもとです。

> 他の方も書かれてらっしゃいますが、仕様です。
> ゲームからの利用を考えておられるのなら、素直にDirectInputを使
> いませう。
> IDirectInputDevice::GetDeviceStateならば、Shift押下状態に関係
> なくテンキーを判別できるはずです。

実はDirectInputにより入力を行うクラスも作ってあります。
SHIFT+テンキーは問題なく取得できるのですが、なんと

(c) テンキーを押しながらSHIFTキーを押し、テンキーを離したあとにSHIFTキーを
  離した場合、テンキーが押しっぱなし状態になることがある。
  こうなった場合、テンキーの同じキーをもう一度押すと元に戻る。
  (トグルされる?)

の状況になってしまうことがたまにあるんです(DirectInputなのに!)
31

[mfc 45630] Re: [mfc 45622] ClearCommError関数の第二引数の使い方が分かりません。

Bunです。

> CE_MODE 要求さあされたモードはサポートできないか又は,hFileが無効。このエ
ラー
> がある場合
> 他のエラーは意味を持たない。

となっているのであれば、hFileが無効なのではないでしょうか。
CreateFile()で得たハンドルを指定されているのでしょうか。
31

[mfc 45629] Re: 関数の配列 C++での書式がわかりません

それ自分も以前悩みました。
とってもごはんさんのページにすばらしいものが載ってるから
ご参考に。

http://www.emit.jp/

static の場合とか 非static とか詳しく。
















__________________________________________________
Do You Yahoo!?
Yahoo! BB is Broadband by Yahoo!
http://bb.yahoo.co.jp/
31

[mfc 45628] Re: 関数の配列 C++での書式がわかりません

青柳です。

----- Original Message ----- 
From: "Touya Kujyo" <t...@yb4.so-net.ne.jp>
Sent: Thursday, July 31, 2003 2:58 PM
Subject: [mfc 45617] 関数の配列 C++での書式がわかりません
Subject: [mfc 45617] 関数の配列 C++での書式がわかりません

> 関数配列の書式が分からないで困ってます。

> static void (*function[2])(...略) = {
>  func_00,
>  func_01
> };

> class TEST_class{
> private:
>     void func_00(...略);
>     void func_01(...略);

>     void    test();
> };

メンバ関数へのポインタの配列はこんな感じ。
    static void (TEST_class::*function[2])() = {
        TEST_class::func_00,
        TEST_class::func_01
    };

それを呼び出すのはこんな感じ(メンバ関数なので当然インスタンス
が必要です)。

    TEST_class test;
    (test.*function[0])();
    (test.*function[1])();

    TEST_class* ptest = new TEST_class();
    (ptest->*function[0])();
    (ptest->*function[1])();

-- 
Microsoft MVP for .NET
青柳 臣一 (Shinichi Aoyagi)
  株式会社ディーバ  DIVA Co.,LTD. (Osaka, Japan)
business  a...@divakk.co.jp
private   a...@osk.3web.ne.jp
記事検索
Amazon.co.jp
  • ライブドアブログ