一.如何获得显示属性
使用GetDeviceCaps函数获取分辨率相关信息
View Code
二.如何设置显示属性
填充DEVMODE结构体信息,使用ChangeDisplaySettings函数修改显示设置
View Code
三.如何设置显示属性
发送SC_MONITORPOWER命令,传递不同参数,即设置显示器显示的模式
View Code
四.如何获得和设置鼠标的双击时间
GetDoubleClickTime和SetDoubleClickTime,一般没必要去修改
void
CDemoDlg::OnTest1()
{
// 获得鼠标的双击时间
UINT nInterval = GetDoubleClickTime();
SetDlgItemInt(IDC_TEXT, nInterval);
}
void CDemoDlg::OnTest2()
{
UINT nInterval = GetDlgItemInt(IDC_TEXT, NULL, FALSE);
// 设置鼠标的双击时间
SetDoubleClickTime(nInterval);
}
{
// 获得鼠标的双击时间
UINT nInterval = GetDoubleClickTime();
SetDlgItemInt(IDC_TEXT, nInterval);
}
void CDemoDlg::OnTest2()
{
UINT nInterval = GetDlgItemInt(IDC_TEXT, NULL, FALSE);
// 设置鼠标的双击时间
SetDoubleClickTime(nInterval);
}
五.如何获得鼠标的按键数
使用GetSystemMetrics函数的SM_CMOUSEBUTTONS参数
void
CDemoDlg::OnTest()
{
// 获得鼠标的按键数
int nCount = GetSystemMetrics(SM_CMOUSEBUTTONS);
CString strText = _T( "" );
strText.Format(_T( " 鼠标按键数:%d " ), nCount);
AfxMessageBox(strText);
}
{
// 获得鼠标的按键数
int nCount = GetSystemMetrics(SM_CMOUSEBUTTONS);
CString strText = _T( "" );
strText.Format(_T( " 鼠标按键数:%d " ), nCount);
AfxMessageBox(strText);
}
六.如何切换鼠标的左键和右键
SwapMouseButton函数,传递TRUE,FALSE
void
CDemoDlg::OnTest()
{
m_bSwap = ! m_bSwap;
// 切换鼠标左右键
::SwapMouseButton(m_bSwap);
}
{
m_bSwap = ! m_bSwap;
// 切换鼠标左右键
::SwapMouseButton(m_bSwap);
}
七.如何获得键盘虚拟键的状态
使用GetKeyboardState获取,The GetKeyboardState function copies the status of the 256 virtual keys to the specified buffer
void
CDemoDlg::OnTest1()
{
BYTE KeyboardState[ 256 ];
// 获得SHIFT键状态
::GetKeyboardState(KeyboardState);
CString strText = _T( "" );
if (KeyboardState[VK_SHIFT] & 0x80 )
{
strText = _T( " SHIFT键被按下。 " );
}
else
{
strText = _T( " SHIFT键被释放。 " );
}
AfxMessageBox(strText);
}
{
BYTE KeyboardState[ 256 ];
// 获得SHIFT键状态
::GetKeyboardState(KeyboardState);
CString strText = _T( "" );
if (KeyboardState[VK_SHIFT] & 0x80 )
{
strText = _T( " SHIFT键被按下。 " );
}
else
{
strText = _T( " SHIFT键被释放。 " );
}
AfxMessageBox(strText);
}
八.如何获得键盘的类型
使用GetKeyboardType函数,均有规定
View Code
九.如何获得键盘按键的名称
使用GetKeyNameText函数,这个应该最实用
BOOL CDemoDlg::PreTranslateMessage(MSG
*
pMsg)
{
if (pMsg -> message == WM_KEYDOWN)
{
TCHAR szKeyName[ 32 ];
// 获得键盘按键的名称
::GetKeyNameText(pMsg -> lParam, szKeyName, 32 );
SetDlgItemText(IDC_TEXT, szKeyName);
}
return CDialog::PreTranslateMessage(pMsg);
}
{
if (pMsg -> message == WM_KEYDOWN)
{
TCHAR szKeyName[ 32 ];
// 获得键盘按键的名称
::GetKeyNameText(pMsg -> lParam, szKeyName, 32 );
SetDlgItemText(IDC_TEXT, szKeyName);
}
return CDialog::PreTranslateMessage(pMsg);
}
十.如何将键盘的扫描码转换成虚拟键值
使用MapVirtualKey函数进行转换
BOOL CDemoDlg::PreTranslateMessage(MSG
*
pMsg)
{
if (pMsg -> message == WM_KEYDOWN)
{
// 获得键盘扫描码
UINT nScanCode = HIWORD(pMsg -> lParam);
SetDlgItemInt(IDC_TEXT1, nScanCode, FALSE);
// 获得虚拟键值
UINT nVKCode = ::MapVirtualKey(nScanCode, 3 );
SetDlgItemInt(IDC_TEXT2, nVKCode, FALSE);
}
return CDialog::PreTranslateMessage(pMsg);
}
{
if (pMsg -> message == WM_KEYDOWN)
{
// 获得键盘扫描码
UINT nScanCode = HIWORD(pMsg -> lParam);
SetDlgItemInt(IDC_TEXT1, nScanCode, FALSE);
// 获得虚拟键值
UINT nVKCode = ::MapVirtualKey(nScanCode, 3 );
SetDlgItemInt(IDC_TEXT2, nVKCode, FALSE);
}
return CDialog::PreTranslateMessage(pMsg);
}