mfc自绘combobox的item高度的诡异问题

1. 自绘的combobox的itemheight设置好以后(假设20像素),在UI上显示的高度会比你设置的像素高3-4个pixel,这包括combobox两部分item的高度:editbox和下面的listbox的item高度。目前尚不知道根本原因。

 

2. 高DPI下,如何让自绘的combo变成DPI-Aware?这个比较麻烦了。因为这个取决于combo的父窗体是否DPI-Aware。如果是的话,那么可以取当前父窗体的字体高度(如果是windows控件,就取systemmetrics),假设为X。再取当前系统的DPI,假设为Y,那么combo的高度为(X-3)*Y/96,这里96是通常的DPI值。如果父窗体给你的combo写死了高度值而不随DPI变化(比如treeview的每一行后面跟一个combo),假设为Z个像素,那么直接在此值基础上减去4就可以了。

 

以上说的给combo设高度值,都是通过系统消息CB_SETITEMHEIGHT完成的,wparam为-1表示combo中editable部分的高度,0表示listitem的高度。

你可能感兴趣的:(windows,UI,mfc)