ボタン コントロール ラッパー クラスがあります。これにより、クラスの既存のハンドルを渡すことができます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);
}
}
Str
std::wstring
ちなみに、プログラムはUnicodeです。しかし、私が取得した文字列と両方の文字列GetClassName()
はWC_BUTTON
両方ともユニコード文字列であり、両方の6
文字が長く、両方とも等しい"Button"
です.行は一体どのようにif (cls == WC_BUTTON)
返されますfalse
か??
一見まったく同じように見える 2 つの文字列がどのように互いに等しくないのか、誰か説明できますか? HWND
または、がボタン/編集/などに属しているかどうかを判断するにはどうすればよいですか。コントロール?