ボタン コントロール ラッパー クラスがあります。これにより、クラスの既存のハンドルを渡すことができますWC_BUTTON。私はGetClassName()これを決定するために使用します。しかし、私には問題があります。コード内のコメントはそれを説明するのに役立ちます:
// Initialize from existing handle
Vivify::Button::Button(HWND handle) {
TCHAR cls[256];
GetClassName(handle, cls, sizeof(cls));
Alert(cls); // MessageBox says "Button"
Alert(WC_BUTTON); // MessageBox says "Button" also
Str clsStr = cls;
Str wcStr = WC_BUTTON;
Alert(ToStr<int>(clsStr.length())); // says "6"
Alert(ToStr<int>(wcStr.length())); // says "6" also
// Problem HERE. Evaluates to false. How are they inequal??
if (cls == WC_BUTTON) {
SetHandle(handle); // Never gets executed
m_id = GetDlgCtrlID(handle);
}
}
Strstd::wstringちなみに、プログラムはUnicodeです。しかし、私が取得した文字列と両方の文字列GetClassName()はWC_BUTTON両方ともユニコード文字列であり、両方の6文字が長く、両方とも等しい"Button"です.行は一体どのようにif (cls == WC_BUTTON)返されますfalseか??
一見まったく同じように見える 2 つの文字列がどのように互いに等しくないのか、誰か説明できますか? HWNDまたは、がボタン/編集/などに属しているかどうかを判断するにはどうすればよいですか。コントロール?