1ハンドル
ハンドルは、オブジェクトを識別するために使用される識別子です。
Windowsがハンドルを設定したい理由は、基本的にメモリ管理メカニズム、つまり仮想アドレスの問題によるものです。つまり、データのアドレスを変更する必要があり、変更後は誰かが変更を記録して管理する必要があるため、システムはハンドルを使用してデータアドレスの変更を記録します。プログラミングでは、ハンドルは特別なスマートポインターであり、アプリケーションが他のシステム(データベース、オペレーティングシステムなど)によって管理されているメモリブロックまたはオブジェクトを参照する場合は、ハンドルが使用されます。
ハンドルは、Windowsシステム内のオブジェクトまたはインスタンスの識別です。これらのオブジェクトには、モジュール、アプリケーションインスタンス、ウィンドウ、コントロール、ビットマップ、GDIオブジェクト、リソース、ファイルなどが含まれます。
データ型の観点からは、これは単なる符号なし整数です。Windowsでは、HWND型です。
ここで言及されているコントロールはコントロールです。一部の本では、コントロールはコントロールと呼ばれています。
2ハンドルツール
ハンドルツールにはさまざまな種類があります。使用法は少し異なります。次
の図は、電卓ウィンドウのハンドルを取得するためのハンドルツールです。
ハンドルを取得した後、さらに使用できます。一部のwin32プログラミングでは、ハンドル値を直接入力できます。
一部のデスクトップシャドウは、表示の問題であるか、プログラムウィンドウがハングしている可能性があります。ハンドルを取得してハンドルを取得できる場合ツールの場合、それはハングしたプログラムウィンドウです。
3 VC ++はハンドルを取得します
void CHandledemoView::OnDraw(CDC* pDC)
{
CHandledemoDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// TODO: add draw code for native data here
CString str1;
HWND hwnd = AfxGetMainWnd()->m_hWnd;
HWND hwnd2 = ::GetActiveWindow();
str1.Format("%x", hwnd);
pDC->TextOut(10,10,str1);
str1.Format("%x", hwnd2);
pDC->TextOut(10,40,str1);
str1.Format("%x", this->m_hWnd);
pDC->TextOut(10,70,str1);
}
一部のmfcクラスにはm_hWndメンバーがあり、このメンバーは現在のウィンドウのハンドルです。