申し訳ないです。自分の環境を書くのを忘れてました。
後、他のpcで試したところ今度は-1が返ってきました。プロコンが壊れてるのかなと思ったのですが接続自体は問題なく、
DInputで入力を取ることもできるのでプロコンが壊れてる線は薄そうです。
エディション Windows 11 Pro
バージョン 25H2
インストール日 ‎2025/‎02/‎27
OS ビルド 26200.7171
エクスペリエンス Windows 機能エクスペリエンス パック 1000.26100.265.0
です。コピペなので自分の環境を間違いなくこれであってます。
念のためコントローラーのタイプを識別しようとしてるとこのコードを張っておきます。
↓DInput.cpp
#include"DxLib.h"
#include"DInput.h"
/// <summary>
/// コンストラクタ
/// </summary>
/// <param name="controllerNumber">コントローラーが何番目につながってるかの数値</param>
DInput::DInput(int controllerNumber)
{
SetJoypadDeadZone(controllerNumber, deadZone_);
controller_ = controllerNumber;
controllerType_ = GetJoypadType(controller_);
switch (controllerType_)
{
case DX_PADTYPE_SWITCH_PRO_CTRL:
break;
default:
proconInit(); //プロコンがプロコンと判定されないのでとりあえずこっちで初期化する
break;
}
}
↓main.cpp
#include"DxLib.h"
#include"KeyInput.h"
#include"DInput.h"
#include<memory>
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
std::shared_ptr<KeyInput> keyInput = std::make_shared<KeyInput>();
std::shared_ptr<DInput> Dinput = std::make_shared<DInput>(DX_INPUT_PAD1);
// DXライブラリの初期化
if (DxLib_Init() < 0) return -1;
// 描画先を裏画面にする
SetDrawScreen(DX_SCREEN_BACK);
// メインループ(何かキーが押されたらループを抜ける)
while (ProcessMessage() == 0 && CheckHitKey(KEY_INPUT_ESCAPE) == 0)
{
// 画面のクリア
ClearDrawScreen();
/*keyInput->update();
DrawFormatString(0, 0, GetColor(255, 255, 255), "押した瞬間:%d", keyInput->getKeyPressedMoment(KEY_INPUT_RETURN));
DrawFormatString(0, 100, GetColor(255, 255, 255), "離した瞬間:%d", keyInput->getKeyReleasedMoment(KEY_INPUT_RETURN));
DrawFormatString(0, 200, GetColor(255, 255, 255), "長押しした:%d", keyInput->getKeyHoldNow(KEY_INPUT_RETURN, 5000.0f));*/
Dinput->update();
DrawFormatString(0, 0, GetColor(255, 255, 255), "押した瞬間:%d", Dinput->getButtonPressedMoment(PROCON_BUTTON::A_BUTTON));
DrawFormatString(0, 50, GetColor(255, 255, 255), "離した瞬間:%d", Dinput->getButtonReleasedMoment(PROCON_BUTTON::A_BUTTON));
DrawFormatString(0, 100, GetColor(255, 255, 255), "長押しした:%d", Dinput->getButtonHoldNow(PROCON_BUTTON::A_BUTTON, 1000.0f));
DrawFormatString(0, 150, GetColor(255, 255, 255), "レフトスティックX:%d", Dinput->getProconStickXY(PROCON_STICK::LEFT_STICK_X));
DrawFormatString(0, 200, GetColor(255, 255, 255), "レフトスティックY:%d", Dinput->getProconStickXY(PROCON_STICK::LEFT_STICK_Y));
DrawFormatString(0, 250, GetColor(255, 255, 255), "レフトスティック角度:%f", Dinput->getProconStickAngle(PROCON_STICK::LEFT_STICK_ANGLE));
// 裏画面の内容を表画面に反映
ScreenFlip();
}
// DXライブラリの後始末
DxLib_End();
// ソフトの終了
return 0;
}