关于 使用WinAPI弹出颜色选择对话框 模式、清晰度及样式 问题

1

以下是创建该对话框的代码:

//获取选择颜色
COLORREF getcolor()
{
	CHOOSECOLOR cc;                 // common dialog box structure 
	static COLORREF acrCustClr[16]; // array of custom colors 
	static DWORD rgbCurrent;        // initial color selection;
	// Initialize CHOOSECOLOR 
	ZeroMemory(&cc, sizeof(cc));
	cc.lStructSize = sizeof(cc);
	cc.hwndOwner = GetHWnd();
	cc.lpCustColors = (LPDWORD)acrCustClr;
	cc.rgbResult = rgbCurrent;
	cc.Flags = CC_FULLOPEN | CC_RGBINIT | CC_ANYCOLOR | CC_SOLIDCOLOR;

	if (ChooseColor(&cc) == TRUE)
	{
		return cc.rgbResult;
	}
	else
	{
		return -1;
	}
}

以下是使用Winapi创建的选择颜色对话框:

使用Winapi创建的选择颜色对话框

以下是画图中的“编辑颜色”对话框:

画图中的“编辑颜色”对话框

请问为什么同样是颜色选择对话框,样式及清晰度(调用颜色选择对话框的文字较模糊)会有所不同?

如何创建类似“画图”中的“编辑颜色”对话框?

ava
小俊逸

2020-5-11

0

根本原因,是因为在高 DPI 设置下的应用程序的显示设置问题。

详见文章:https://codebus.cn/yangw/a/dpi-awareness

如果设置当前程序 PROCESS_PER_MONITOR_DPI_AWARE 或 PROCESS_SYSTEM_DPI_AWARE,那么调用这个颜色选择窗口时,显示会非常清晰。

ava
慢羊羊

2020-8-10

技术讨论社区