ぜんぜんわかりません。

[戻る]
アマチュアにすらなれない男 2005/02/12(土) 13:25:13
■ハンドルとクラスのマップ
typedef map<HWND, CMyAPP*, less<HWND> > THWndCMyAPPMap;
static THWndCMyAPPMap HWndCMyAPPMap;

■ハンドラー
static LRESULT WINAPI WndProc(
    HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam
) {
    THWndCMyAPPMap::iterator iter=HWndCMyAPPMap.find(hwnd);
    if (iter==HWndCMyAPPMap.end())
        return DefWindowProc( hwnd, msg, wparam, lparam );
    CMyAPP* myapp=iter->second;
    return myapp->WndProc(msg, wparam, lparam);
}

上記の二つの処理ですが、学校で出されたサンプルなのですが、
何をしているのかまったくわかりません。
どうか、おしえていただけませんでしょうか?

2005/02/12(土) 14:25:44
>上記の二つの処理ですが、学校で出されたサンプルなのですが、
>何をしているのかまったくわかりません。

どこで躓(つまず)いているのか、この書き方では分かりません
ですから、何をどうお答えすればいいのかも分かり兼ねます

map が分からないのでしょうか? map の find() が分からないのでしょうか?
CMyApp* myapp=iter ->second; が分からないのでしょうか?()
return myapp->WndProc(msg,wparam,lparam); が分からないのでしょうか?
それとも、それぞれの構成部品については分かるが、全体で何がしたいのかが
分からないのでしょうか?

アマチュアにすらなれない男 2005/02/15(火) 20:39:54
早速のレス有難う御座います。
そうですね。
お書きになられているとおりです。

======================================
map<HWND, CMyAPP*, less<HWND>>
この処理ですが、このmapのなかのless<HWND>という処理は何をしているのか
わからないのです。
この処理はHWNDをCMyAPPから参照できるということですよね?

======================================
 // イテレータってなんでしょうか? キーhwndのイテレータを返す?
 THWndCMyAPPMap::iterator iter=HWndCMyAPPMap.find(hwnd);

  // 最後尾の要素なら
    if (iter==HWndCMyAPPMap.end()){
    // プロシージャのアドレスを返している?
        return DefWindowProc( hwnd, msg, wparam, lparam );
  }

  // secondってなんでしょう?
    CMyAPP* myapp=iter->second;

  // プロシージャのアドレスを返している?
    return myapp->WndProc(msg, wparam, lparam);

とおりすがり 2005/02/16(水) 02:13:29
C++およびC言語の基礎を勉強した方が絶対に近道です。
あなたがわからないところを全て教えていたのでは、本が一冊書けてしまいそう。

wood 2005/02/16(水) 06:43:12
「とおりすがり さん」と同意のことですが

typedef、static、マップ、ハンドル、イテレータ 等
それぞれ言葉(単語)の意味がわからないのであれば
学校の先生に講釈してもらうのが早道だと思います

課題であれ質問のソースがc++のソースであった場合、最低(C言語基礎)は
熟知しているものとして扱われることが多いものです

ですから、C++/STLについて勉強を深めることをお勧めします

2005/02/16(水) 10:25:50
>map<HWND, CMyAPP*, less<HWND>>
>この処理ですが、このmapのなかのless<HWND>という処理は何をしているのか
>わからないのです。
>この処理はHWNDをCMyAPPから参照できるということですよね?

map<HWND, CMyAPP*, less<HWND> > は処理ではありません。型を示そうとしています。

PATIO 2005/02/16(水) 14:09:22
このソースが提示されたということは
少なくともC++の知識がある程度ある事が前提になると思うんですが、
提示された人はアマチュアにすらなれない男さんがその知識を持っていると
考えているのではないですか?
もし、あなたがC++言語の知識および、STLの知識を全く、或いはほとんど持っていないの
であれば、
その事を正直に話してそこから教えを請うべきだと思います。
知識が無いのでは、ソースは読めません。
皆さんが言われているように、まずはC++言語とSTLの勉強からはじめた方が良いと思います。

古いスレッドには追加発言できません。