超级博客 Win32 设备管理(2)

点击打开链接

 

一.如何获得显示属性

使用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);
}
复制代码

 

五.如何获得鼠标的按键数

使用GetSystemMetrics函数的SM_CMOUSEBUTTONS参数

 

复制代码
void  CDemoDlg::OnTest() 
{
    
// 获得鼠标的按键数
     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);
}
复制代码

 

七.如何获得键盘虚拟键的状态

使用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);
}
复制代码

 

八.如何获得键盘的类型

使用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);
}
复制代码

 

十.如何将键盘的扫描码转换成虚拟键值

使用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);
}
复制代码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值