游戏开发论坛

 找回密码
 立即注册
搜索
查看: 1809|回复: 2

MFC project with DirecInput

[复制链接]

414

主题

611

帖子

621

积分

高级会员

Rank: 4

积分
621
发表于 2008-7-29 15:33:00 | 显示全部楼层 |阅读模式
I create a MFC project in VS2008.
And I want to use DirectInput in this project.
But I met a problem of Unepected error encountered when I SetCooperativeLevel in keyboard and mouse.
Can MFC project use the DirectInput?
I should use which value of SetCooperativeLevel for keyboard and mouse.


  1. void DirectInput::DirectInputInit(HINSTANCE AppInstance,HWND hWnd)
  2. {
  3.         ZeroMemory(mKeyboardState, sizeof(mKeyboardState));
  4.         ZeroMemory(&mMouseState, sizeof(mMouseState));

  5.         HR(DirectInput8Create(AfxGetInstanceHandle(), DIRECTINPUT_VERSION,
  6.                 IID_IDirectInput8, (void**)&mDInput, 0));

  7.         HR(mDInput->CreateDevice(GUID_SysKeyboard, &mKeyboard, 0));
  8.         HR(mKeyboard->SetDataFormat(&c_dfDIKeyboard));
  9.         HR(mKeyboard->SetCooperativeLevel(m_hWnd, DISCL_NONEXCLUSIVE|DISCL_FOREGROUND));
  10.         HR(mKeyboard->Acquire());

  11.         HR(mDInput->CreateDevice(GUID_SysMouse, &mMouse, 0));
  12.         HR(mMouse->SetDataFormat(&c_dfDIMouse2));
  13.         HR(mMouse->SetCooperativeLevel(m_hWnd, DISCL_NONEXCLUSIVE|DISCL_FOREGROUND));
  14.         HR(mMouse->Acquire());
  15. }
复制代码

2

主题

15

帖子

15

积分

新手上路

Rank: 1

积分
15
发表于 2008-7-29 16:51:00 | 显示全部楼层

Re:MFC project with DirecInput

MFC程序肯定能使用DirextInput的,虽然我是用得VS2003
不过我的印象中创建input对象时使用的句柄应该和创建Device是一样的句柄,MFC如果是文档视结构的应该使用MainFrm的句柄创建
DirectInput8Create的第一个参数和你后来SetCooperativeLevel的第一个参数是同一个句柄吗?从你贴出的代码没法看出m_hWnd的值到底是什么

414

主题

611

帖子

621

积分

高级会员

Rank: 4

积分
621
 楼主| 发表于 2008-8-8 14:23:00 | 显示全部楼层

Re:MFC project with DirecInput

DirectInput di;

di.DirectInputInit(AfxGetInstanceHandle(), m_pMainFrame->m_hWnd,DISCL_NONEXCLUSIVE|DISCL_FOREGROUND , DISCL_NONEXCLUSIVE|DISCL_FOREGROUND );
gDInput = &di;

void DirectInput:irectInputInit(HINSTANCE AppInstance,HWND hWnd,DWORD keyboardCoopFlags, DWORD mouseCoopFlags)
{
        ZeroMemory(mKeyboardState, sizeof(mKeyboardState));
        ZeroMemory(&mMouseState, sizeof(mMouseState));

        HR(DirectInput8Create(AppInstance, DIRECTINPUT_VERSION,
                IID_IDirectInput8, (void**)&mDInput, 0));

        HR(mDInput->CreateDevice(GUID_SysKeyboard, &mKeyboard, 0));
        HR(mKeyboard->SetDataFormat(&c_dfDIKeyboard));
        HR(mKeyboard->SetCooperativeLevel(hWnd, keyboardCoopFlags));
        HR(mKeyboard->Acquire());

        HR(mDInput->CreateDevice(GUID_SysMouse, &mMouse, 0));
        HR(mMouse->SetDataFormat(&c_dfDIMouse2));
        HR(mMouse->SetCooperativeLevel(hWnd, mouseCoopFlags));
        HR(mMouse->Acquire());
}
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2026-1-21 17:53

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表