|
|
@@ -343,6 +343,21 @@ namespace DuiLib {
|
|
|
::MapWindowRect(pOwner->GetManager()->GetPaintWindow(), HWND_DESKTOP, &rc);
|
|
|
}
|
|
|
|
|
|
+ // 【R68】dropboxinset 的水平分量:把弹层左右边缘内收。
|
|
|
+ // 【为什么】本函数此前只把 rcInset.top 拿去算高度(见上面 cyFixed),left/right 从未生效
|
|
|
+ // ⇒ 弹层窗口宽度恒等于 szDrop.cx、且左边缘恒等于 Combo 左边缘;
|
|
|
+ // 而弹层那圈 1px 边框画在窗口边缘(见 WM_CREATE 的 SetBorderColor/SetBorderSize),
|
|
|
+ // 于是弹层的可见边框会比同宽输入框(底图边线内缩 4px)左右各外扩 4px。
|
|
|
+ // 这里补上水平内收:配合 XML 的 dropboxinset="4,0,4,0" 让弹层左右与输入框对齐。
|
|
|
+ // 【自限】默认 m_rcDropBox = {0,0,0,0}(构造函数 ZeroMemory)⇒ 未显式设置 dropboxinset 的
|
|
|
+ // 既有 Combo 行为完全不变;当前仅登录页账号 Combo 设置该项。
|
|
|
+ // 此处 rc 已是屏幕坐标(上方 MapWindowRect),水平像素位移与坐标系无关,直接加即可。
|
|
|
+ if( rcInset.left != 0 || rcInset.right != 0 ) {
|
|
|
+ rc.left += rcInset.left;
|
|
|
+ rc.right -= rcInset.right;
|
|
|
+ if( rc.right - rc.left < 8 ) rc.right = rc.left + 8; // 防御:别算出非正宽度
|
|
|
+ }
|
|
|
+
|
|
|
// 【诊断】创建前的目标矩形(已是屏幕坐标)+ 创建前焦点现场。
|
|
|
DuiLibDiag::Log(_T("COMBO-INIT create rc=%d,%d,%d,%d (screen) ownerRc=%d,%d,%d,%d"),
|
|
|
rc.left, rc.top, rc.right, rc.bottom,
|