小编P. *_*ery的帖子

RAWINPUT - 如何获取鼠标滚轮数据

我正在使用带有directx的rawinput ...我正在尝试使用鼠标滚轮时使用相机进行缩放...当我使用以下代码运行程序时,我从rawinput获取的用于usbuttondata的数据变为120我向前推鼠标滚轮......然后它失去控制......高达65000 ......我认为数据应该是1或-1或0 ... rawinput作为鼠标滚轮数据发送什么?

码:

LRESULT CALLBACK WndProc(HWND hWnd, UINT Msg,
                             WPARAM wParam, LPARAM lParam)
{
    switch(Msg)
    {
        case WM_CREATE:
            {
                RAWINPUTDEVICE Rid[2];
                // Keyboard
                Rid[0].usUsagePage = 1;
                Rid[0].usUsage = 6;
                Rid[0].dwFlags = 0;
                Rid[0].hwndTarget=Inst.Wnd.hWnd;

                // Mouse
                Rid[1].usUsagePage = 1;
                Rid[1].usUsage = 2;
                Rid[1].dwFlags = 0;
                Rid[1].hwndTarget=Inst.Wnd.hWnd;
                if (!RegisterRawInputDevices(Rid,2,sizeof(RAWINPUTDEVICE)))
                {
                    MessageBox(NULL, L"Failed to Register Input Devices!", L"ALERT", MB_OK);
                    exit(1);
                }
                return 0;
            }
        case WM_INPUT:
            {               
                // Determine how big the buffer should be
                UINT iBuffer;

                GetRawInputData((HRAWINPUT)lParam, RID_INPUT, NULL, …
Run Code Online (Sandbox Code Playgroud)

c++ directx winapi raw-input

2
推荐指数
1
解决办法
4697
查看次数

Win32 自定义绘制树视图控件

我正在尝试使用 NM_CUSTOMDRAW 消息自定义树视图控件。我只是想用灰色绘制所有其他可见的项目。这是绘制的代码:

INT CResourceOutliner::On_WM_NOTIFY( HWND hDlg, WPARAM wParam, LPARAM lParam )
{
    HWND hTree = GetDlgItem( hDlg, IDC_TREE1 ); 
    switch( ( ( LPNMHDR )lParam )->code )
    {
    ...
    case NM_CUSTOMDRAW:
            {           
                LPNMTVCUSTOMDRAW pCustomDraw = ( LPNMTVCUSTOMDRAW )lParam;
                switch( pCustomDraw->nmcd.dwDrawStage )
                {               
                case CDDS_PREPAINT:
                    return CDRF_NOTIFYITEMDRAW;
                case CDDS_ITEMPREPAINT:
                    {
                        switch ( pCustomDraw->iLevel )                  
                        {
                            // painting all 0-level items blue,                     
                            // and all 1-level items red (GGH)25.                       
                        case 0:
                            {
                            if( pCustomDraw->nmcd.uItemState == ( CDIS_FOCUS | CDIS_SELECTED ) )                            
                                pCustomDraw->clrTextBk …
Run Code Online (Sandbox Code Playgroud)

c++ treeview winapi dialog

2
推荐指数
1
解决办法
3423
查看次数

用WIN32读取文本文件

我正在尝试使用c ++中的win32程序解析文本文件.是否有一种逐行读取文本文件的简单方法?我的文本文件由我想要存储在char数组中的字符串组成(const char*cArray [67]).这是我到目前为止所拥有的.我正在使用CreateFile和ReadFile.我从readfile获得访问冲突错误(0x000003e6):

CDECK::CDECK():filename(".\\Deck/list.txt")
{
    LPVOID data = NULL;
    hFile = CreateFileA(filename, GENERIC_READ,FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
    if(hFile == INVALID_HANDLE_VALUE)
        MessageBox(NULL, L"Failed to CreateFile - 'hFile'", L"CDECK::CDECK()", MB_OK);

    DWORD fileSize = GetFileSize(hFile, &fileSize);
    DWORD read = -1;
    if(!ReadFile(hFile, data, fileSize, &read, NULL))
    {
        DWORD err = GetLastError();
        MessageBox(NULL, L"Failed to ReadFile - 'hFile'", L"CDECK::CDECK()", MB_OK);
    }
    return;
}
Run Code Online (Sandbox Code Playgroud)

c++ file-io winapi

1
推荐指数
2
解决办法
2万
查看次数

已签名的浮点变量转换为无符号DWORD

我试图将带符号的浮点变量转换为DWORD ... DWORD将被另一个程序使用,因此DWORD变量类型很重要...

首先......签名的DWORD可以解释为无符号的DWORD ..?

还...我怎样才能将签名的浮点数转换为DWORD(签名)..?

c++ winapi

0
推荐指数
1
解决办法
4419
查看次数

Python - 将带符号的float转换为Unsigned Long(win32的DWORD)

我知道python没有无符号变量,但是我需要将一个运行python(Blender)的程序转换为用C++编写的win32应用程序.我知道我可以像这样转换一个整数:

>>> int i = -1

>>> _ + 2**32
Run Code Online (Sandbox Code Playgroud)

我怎样才能像0.2345f那样使用浮点数并将其转换为长类型?我需要在python中转换为long,然后在win32(c ++)中返回float ...

通常在C++中,它是下降的

>>>float f = 0.2345f;

>>>DWORD dw = *reinterpret_cast< DWORD* >( &f );
Run Code Online (Sandbox Code Playgroud)

这会产生一个无符号长...并将其转换回来就是相反的:

>>>FLOAT f = *reinterpret_cast< FLOAT* >( &dw );
Run Code Online (Sandbox Code Playgroud)

c++ python type-conversion

0
推荐指数
1
解决办法
2279
查看次数

C#:我可以扩展一个外部类,使它实现一个本地接口

我有2个组件(外国和本地).外部装配不能修改.我想扩展一个外来类,以便它现在实现一个本地接口.这可能在C#中吗?

编辑:我知道我可以做以下事情:

// foreign.dll
namespace DX {
    public struct Vector3 {
        ...
    }
}

// local.dll
namespace MyDX {
    public static class Extensions {
        public static void MyExtensionMethod( this Vector3 vec, int index ){
            ...
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我感兴趣的是强制外部类/结构实现特定的接口(不使用继承).我想将Vector3用作泛型类中的类型:

public class MyGeneric<T> where T: IComparable<T> {
    T _value;
}
Run Code Online (Sandbox Code Playgroud)

上面的结构:Vector3没有实现IComparable,但是我想使用反射来实现接口,这样我就可以使用现有形式的外部类/结构(即使用继承的w/o).继承可能是必要的......

c# reflection .net-assembly

0
推荐指数
1
解决办法
328
查看次数