0

標準の c++ チュートリアルを完了した後、いくつかの hello world を実行しようとしています。私が最初に試みたのは、ウィンドウなしで画面に直接描画することです。私はこれを見つけました、そしてそれは動作します。

#include "stdafx.h"
#include <Windows.h>
#include <iostream>
using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{
    HDC screenDC = ::GetDC(0);
    ::Rectangle(screenDC, 200, 200, 300, 300);

    int exit; cin >> exit;
    return 0;
}

ここに画像の説明を入力

しかし、標準の C++ チュートリアルのどこにも、このようなことはカバーされていません

HDC screenDC = ::GetDC(0);
::Rectangle(screenDC, 800, 200, 300, 300);

Rectangle は何のメンバーですか?


よろしければ、簡単な質問が他にもいくつかあります。そうでない場合は、心配しないでください。

  • 私の長方形にウィンドウが移動するとすぐに、ウィンドウが消えます。再描画できるように、これを知らせるコールバックはありますか?

  • 長方形の色を変更するにはどうすればよいですか?

  • これについてどこで学べますか? 私が見つけたすべてのチュートリアルはまばらで、ほとんどが古くなっています。それが私がする必要があることなら、私は本を手に入れることができます。次のことを試しました(成功する場合もあれば、成功しない場合もあります):

  • http://msdn.microsoft.com/en-us/library/vstudio/bb384843.aspx

  • http://www.winprog.org/tutorial/

  • http://msdn.microsoft.com/en-us/library/ms533895(v=vs.85).aspx

4

4 に答える 4

9

::スコープ解決演算子です。

scope::nameと呼ばれるクラスまたは名前空間で宣言された名前を使用することを意味しますscope

::nameグローバル名前空間で宣言された名前を使用することを意味します。通常、これはオプションです。ただし、現在のスコープに同じ名前のものが他にある場合は、必要になることがあります。

于 2013-05-14T17:23:39.067 に答える
7

::そのようにグローバル名前空間にアクセスします。名前空間の解決です。必要に応じてそれらを削除でき::ます。それらは余分なクラフです。

于 2013-05-14T17:22:40.230 に答える
2

::スコープ解決演算子です。::Identifierグローバル名前空間内のすべてを参照します。ただし、常に必要というわけではありません。それを使用しないとあいまいさが生じる場合にのみ、本当に必要です。

int i = 0;

void func() {
    int i = 0;

    ::i = 1; // This will set the global i
    i = 1; // This will set the local i
}

(注: 私は決してグローバルを支持しません)

于 2013-05-14T17:25:04.250 に答える
1

:: は、クラスまたは名前空間にあるものにアクセスするために使用されます。(または、この場合、そうではありません。)

したがって、静的メソッド bar を持つクラス Foo がある場合は、次のように呼び出すことができます Foo::Bar();

また、関数 PrintPrettyThings を持つ名前空間 MyLibrary がある場合は、次のように呼び出すことができます。 MyLibrary::PrintPrettyThings();

また、どこかに別の関数 Bar があり、Foo のメソッド内にいる場合は、 ::Bar();Foo の外側にある Bar を呼び出すために使用できます。それ以外の場合は、Foo::Bar を呼び出すだけです。

于 2013-05-14T17:25:38.777 に答える