ScpUser/ScpExtended.h (207 lines of code) (raw):

#pragma once #include "SCPExtensions.h" namespace SCPUser { using namespace System; using namespace System::ComponentModel; using namespace System::Collections; using namespace System::Windows::Forms; using namespace System::Data; using namespace System::Drawing; static SCP_EXTN m_Extension[4]; static DWORD m_Status [4]; public ref class SCPExtended : public System::Windows::Forms::Form { public: SCPExtended(void) { InitializeComponent(); for(int Index = 0; Index < 4; Index++) { m_Status[Index] = ERROR_DEVICE_NOT_CONNECTED; } tmUpdate->Enabled = true; } protected: ~SCPExtended() { if (components) { delete components; } } #pragma region Windows Form Designer generated code /// <summary> /// Required designer variable. /// </summary> private: System::ComponentModel::IContainer^ components; private: System::Windows::Forms::ListView^ lvGrid; private: System::Windows::Forms::ColumnHeader^ chName; private: System::Windows::Forms::ColumnHeader^ chController1; private: System::Windows::Forms::ColumnHeader^ chController2; private: System::Windows::Forms::ColumnHeader^ chController3; private: System::Windows::Forms::Timer^ tmUpdate; private: System::Windows::Forms::ColumnHeader^ chController4; private: /// <summary> /// Required method for Designer support - do not modify /// the contents of this method with the code editor. /// </summary> void InitializeComponent(void) { this->components = (gcnew System::ComponentModel::Container()); System::Windows::Forms::ListViewItem^ listViewItem1 = (gcnew System::Windows::Forms::ListViewItem(gcnew cli::array< System::String^ >(5) {L"Up", L"<n/a>", L"<n/a>", L"<n/a>", L"<n/a>"}, -1)); System::Windows::Forms::ListViewItem^ listViewItem2 = (gcnew System::Windows::Forms::ListViewItem(gcnew cli::array< System::String^ >(5) {L"Right", L"<n/a>", L"<n/a>", L"<n/a>", L"<n/a>"}, -1)); System::Windows::Forms::ListViewItem^ listViewItem3 = (gcnew System::Windows::Forms::ListViewItem(gcnew cli::array< System::String^ >(5) {L"Down", L"<n/a>", L"<n/a>", L"<n/a>", L"<n/a>"}, -1)); System::Windows::Forms::ListViewItem^ listViewItem4 = (gcnew System::Windows::Forms::ListViewItem(gcnew cli::array< System::String^ >(5) {L"Left", L"<n/a>", L"<n/a>", L"<n/a>", L"<n/a>"}, -1)); System::Windows::Forms::ListViewItem^ listViewItem5 = (gcnew System::Windows::Forms::ListViewItem(gcnew cli::array< System::String^ >(5) {L"LX", L"<n/a>", L"<n/a>", L"<n/a>", L"<n/a>"}, -1)); System::Windows::Forms::ListViewItem^ listViewItem6 = (gcnew System::Windows::Forms::ListViewItem(gcnew cli::array< System::String^ >(5) {L"LY", L"<n/a>", L"<n/a>", L"<n/a>", L"<n/a>"}, -1)); System::Windows::Forms::ListViewItem^ listViewItem7 = (gcnew System::Windows::Forms::ListViewItem(gcnew cli::array< System::String^ >(5) {L"L1", L"<n/a>", L"<n/a>", L"<n/a>", L"<n/a>"}, -1)); System::Windows::Forms::ListViewItem^ listViewItem8 = (gcnew System::Windows::Forms::ListViewItem(gcnew cli::array< System::String^ >(5) {L"L2", L"<n/a>", L"<n/a>", L"<n/a>", L"<n/a>"}, -1)); System::Windows::Forms::ListViewItem^ listViewItem9 = (gcnew System::Windows::Forms::ListViewItem(gcnew cli::array< System::String^ >(5) {L"L3", L"<n/a>", L"<n/a>", L"<n/a>", L"<n/a>"}, -1)); System::Windows::Forms::ListViewItem^ listViewItem10 = (gcnew System::Windows::Forms::ListViewItem(gcnew cli::array< System::String^ >(5) {L"RX", L"<n/a>", L"<n/a>", L"<n/a>", L"<n/a>"}, -1)); System::Windows::Forms::ListViewItem^ listViewItem11 = (gcnew System::Windows::Forms::ListViewItem(gcnew cli::array< System::String^ >(5) {L"RY", L"<n/a>", L"<n/a>", L"<n/a>", L"<n/a>"}, -1)); System::Windows::Forms::ListViewItem^ listViewItem12 = (gcnew System::Windows::Forms::ListViewItem(gcnew cli::array< System::String^ >(5) {L"R1", L"<n/a>", L"<n/a>", L"<n/a>", L"<n/a>"}, -1)); System::Windows::Forms::ListViewItem^ listViewItem13 = (gcnew System::Windows::Forms::ListViewItem(gcnew cli::array< System::String^ >(5) {L"R2", L"<n/a>", L"<n/a>", L"<n/a>", L"<n/a>"}, -1)); System::Windows::Forms::ListViewItem^ listViewItem14 = (gcnew System::Windows::Forms::ListViewItem(gcnew cli::array< System::String^ >(5) {L"R3", L"<n/a>", L"<n/a>", L"<n/a>", L"<n/a>"}, -1)); System::Windows::Forms::ListViewItem^ listViewItem15 = (gcnew System::Windows::Forms::ListViewItem(gcnew cli::array< System::String^ >(5) {L"Triangle", L"<n/a>", L"<n/a>", L"<n/a>", L"<n/a>"}, -1)); System::Windows::Forms::ListViewItem^ listViewItem16 = (gcnew System::Windows::Forms::ListViewItem(gcnew cli::array< System::String^ >(5) {L"Circle", L"<n/a>", L"<n/a>", L"<n/a>", L"<n/a>"}, -1)); System::Windows::Forms::ListViewItem^ listViewItem17 = (gcnew System::Windows::Forms::ListViewItem(gcnew cli::array< System::String^ >(5) {L"Cross", L"<n/a>", L"<n/a>", L"<n/a>", L"<n/a>"}, -1)); System::Windows::Forms::ListViewItem^ listViewItem18 = (gcnew System::Windows::Forms::ListViewItem(gcnew cli::array< System::String^ >(5) {L"Square", L"<n/a>", L"<n/a>", L"<n/a>", L"<n/a>"}, -1)); System::Windows::Forms::ListViewItem^ listViewItem19 = (gcnew System::Windows::Forms::ListViewItem(gcnew cli::array< System::String^ >(5) {L"Select", L"<n/a>", L"<n/a>", L"<n/a>", L"<n/a>"}, -1)); System::Windows::Forms::ListViewItem^ listViewItem20 = (gcnew System::Windows::Forms::ListViewItem(gcnew cli::array< System::String^ >(5) {L"Start", L"<n/a>", L"<n/a>", L"<n/a>", L"<n/a>"}, -1)); System::Windows::Forms::ListViewItem^ listViewItem21 = (gcnew System::Windows::Forms::ListViewItem(gcnew cli::array< System::String^ >(5) {L"PS", L"<n/a>", L"<n/a>", L"<n/a>", L"<n/a>"}, -1)); this->lvGrid = (gcnew System::Windows::Forms::ListView()); this->chName = (gcnew System::Windows::Forms::ColumnHeader()); this->chController1 = (gcnew System::Windows::Forms::ColumnHeader()); this->chController2 = (gcnew System::Windows::Forms::ColumnHeader()); this->chController3 = (gcnew System::Windows::Forms::ColumnHeader()); this->chController4 = (gcnew System::Windows::Forms::ColumnHeader()); this->tmUpdate = (gcnew System::Windows::Forms::Timer(this->components)); this->SuspendLayout(); // // lvGrid // this->lvGrid->Columns->AddRange(gcnew cli::array< System::Windows::Forms::ColumnHeader^ >(5) {this->chName, this->chController1, this->chController2, this->chController3, this->chController4}); this->lvGrid->Dock = System::Windows::Forms::DockStyle::Fill; this->lvGrid->FullRowSelect = true; this->lvGrid->Items->AddRange(gcnew cli::array< System::Windows::Forms::ListViewItem^ >(21) {listViewItem1, listViewItem2, listViewItem3, listViewItem4, listViewItem5, listViewItem6, listViewItem7, listViewItem8, listViewItem9, listViewItem10, listViewItem11, listViewItem12, listViewItem13, listViewItem14, listViewItem15, listViewItem16, listViewItem17, listViewItem18, listViewItem19, listViewItem20, listViewItem21}); this->lvGrid->Location = System::Drawing::Point(0, 0); this->lvGrid->Name = L"lvGrid"; this->lvGrid->Size = System::Drawing::Size(379, 388); this->lvGrid->TabIndex = 0; this->lvGrid->TabStop = false; this->lvGrid->UseCompatibleStateImageBehavior = false; this->lvGrid->View = System::Windows::Forms::View::Details; // // chName // this->chName->Text = L"Name"; this->chName->Width = 75; // // chController1 // this->chController1->Text = L"Value (#1)"; this->chController1->Width = 75; // // chController2 // this->chController2->Text = L"Value (#2)"; this->chController2->Width = 75; // // chController3 // this->chController3->Text = L"Value (#3)"; this->chController3->Width = 75; // // chController4 // this->chController4->Text = L"Value (#4)"; this->chController4->Width = 75; // // tmUpdate // this->tmUpdate->Tick += gcnew System::EventHandler(this, &SCPExtended::tmUpdate_Tick); // // SCPExtended // this->AutoScaleDimensions = System::Drawing::SizeF(6, 13); this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font; this->ClientSize = System::Drawing::Size(379, 388); this->ControlBox = false; this->Controls->Add(this->lvGrid); this->FormBorderStyle = System::Windows::Forms::FormBorderStyle::FixedToolWindow; this->Name = L"SCPExtended"; this->ShowInTaskbar = false; this->SizeGripStyle = System::Windows::Forms::SizeGripStyle::Hide; this->Text = L"SCPExtended"; this->ResumeLayout(false); } #pragma endregion private: System::Void tmUpdate_Tick(System::Object^ sender, System::EventArgs^ e) { SCP_EXTN Extension; DWORD Status; // lvGrid->BeginUpdate(); for (int Index = 0, Column = 1, Row = 0; Index < 4; Index++, Column++) { if ((Status = XInputGetExtended(Index, &Extension)) == ERROR_SUCCESS) { if (m_Status[Index] != Status) { lvGrid->Items[ 0]->SubItems[Column]->Text = String::Format("{0:F3}", Extension.SCP_UP ); lvGrid->Items[ 1]->SubItems[Column]->Text = String::Format("{0:F3}", Extension.SCP_RIGHT); lvGrid->Items[ 2]->SubItems[Column]->Text = String::Format("{0:F3}", Extension.SCP_DOWN ); lvGrid->Items[ 3]->SubItems[Column]->Text = String::Format("{0:F3}", Extension.SCP_LEFT ); lvGrid->Items[ 4]->SubItems[Column]->Text = String::Format("{0:F3}", Extension.SCP_LX); lvGrid->Items[ 5]->SubItems[Column]->Text = String::Format("{0:F3}", Extension.SCP_LY); lvGrid->Items[ 6]->SubItems[Column]->Text = String::Format("{0:F3}", Extension.SCP_L1); lvGrid->Items[ 7]->SubItems[Column]->Text = String::Format("{0:F3}", Extension.SCP_L2); lvGrid->Items[ 8]->SubItems[Column]->Text = String::Format("{0:F3}", Extension.SCP_L3); lvGrid->Items[ 9]->SubItems[Column]->Text = String::Format("{0:F3}", Extension.SCP_RX); lvGrid->Items[10]->SubItems[Column]->Text = String::Format("{0:F3}", Extension.SCP_RY); lvGrid->Items[11]->SubItems[Column]->Text = String::Format("{0:F3}", Extension.SCP_R1); lvGrid->Items[12]->SubItems[Column]->Text = String::Format("{0:F3}", Extension.SCP_R2); lvGrid->Items[13]->SubItems[Column]->Text = String::Format("{0:F3}", Extension.SCP_R3); lvGrid->Items[14]->SubItems[Column]->Text = String::Format("{0:F3}", Extension.SCP_T); lvGrid->Items[15]->SubItems[Column]->Text = String::Format("{0:F3}", Extension.SCP_C); lvGrid->Items[16]->SubItems[Column]->Text = String::Format("{0:F3}", Extension.SCP_X); lvGrid->Items[17]->SubItems[Column]->Text = String::Format("{0:F3}", Extension.SCP_S); lvGrid->Items[18]->SubItems[Column]->Text = String::Format("{0:F3}", Extension.SCP_SELECT); lvGrid->Items[19]->SubItems[Column]->Text = String::Format("{0:F3}", Extension.SCP_START ); lvGrid->Items[20]->SubItems[Column]->Text = String::Format("{0:F3}", Extension.SCP_PS ); } else { if (m_Extension[Index].SCP_UP != Extension.SCP_UP ) lvGrid->Items[0]->SubItems[Column]->Text = String::Format("{0:F3}", Extension.SCP_UP ); if (m_Extension[Index].SCP_RIGHT != Extension.SCP_RIGHT) lvGrid->Items[1]->SubItems[Column]->Text = String::Format("{0:F3}", Extension.SCP_RIGHT); if (m_Extension[Index].SCP_DOWN != Extension.SCP_DOWN ) lvGrid->Items[2]->SubItems[Column]->Text = String::Format("{0:F3}", Extension.SCP_DOWN ); if (m_Extension[Index].SCP_LEFT != Extension.SCP_LEFT ) lvGrid->Items[3]->SubItems[Column]->Text = String::Format("{0:F3}", Extension.SCP_LEFT ); if (m_Extension[Index].SCP_LX != Extension.SCP_LX) lvGrid->Items[4]->SubItems[Column]->Text = String::Format("{0:F3}", Extension.SCP_LX); if (m_Extension[Index].SCP_LY != Extension.SCP_LY) lvGrid->Items[5]->SubItems[Column]->Text = String::Format("{0:F3}", Extension.SCP_LY); if (m_Extension[Index].SCP_L1 != Extension.SCP_L1) lvGrid->Items[6]->SubItems[Column]->Text = String::Format("{0:F3}", Extension.SCP_L1); if (m_Extension[Index].SCP_L2 != Extension.SCP_L2) lvGrid->Items[7]->SubItems[Column]->Text = String::Format("{0:F3}", Extension.SCP_L2); if (m_Extension[Index].SCP_L3 != Extension.SCP_L3) lvGrid->Items[8]->SubItems[Column]->Text = String::Format("{0:F3}", Extension.SCP_L3); if (m_Extension[Index].SCP_RX != Extension.SCP_RX) lvGrid->Items[ 9]->SubItems[Column]->Text = String::Format("{0:F3}", Extension.SCP_RX); if (m_Extension[Index].SCP_RY != Extension.SCP_RY) lvGrid->Items[10]->SubItems[Column]->Text = String::Format("{0:F3}", Extension.SCP_RY); if (m_Extension[Index].SCP_R1 != Extension.SCP_R1) lvGrid->Items[11]->SubItems[Column]->Text = String::Format("{0:F3}", Extension.SCP_R1); if (m_Extension[Index].SCP_R2 != Extension.SCP_R2) lvGrid->Items[12]->SubItems[Column]->Text = String::Format("{0:F3}", Extension.SCP_R2); if (m_Extension[Index].SCP_R3 != Extension.SCP_R3) lvGrid->Items[13]->SubItems[Column]->Text = String::Format("{0:F3}", Extension.SCP_R3); if (m_Extension[Index].SCP_T != Extension.SCP_T) lvGrid->Items[14]->SubItems[Column]->Text = String::Format("{0:F3}", Extension.SCP_T); if (m_Extension[Index].SCP_C != Extension.SCP_C) lvGrid->Items[15]->SubItems[Column]->Text = String::Format("{0:F3}", Extension.SCP_C); if (m_Extension[Index].SCP_X != Extension.SCP_X) lvGrid->Items[16]->SubItems[Column]->Text = String::Format("{0:F3}", Extension.SCP_X); if (m_Extension[Index].SCP_S != Extension.SCP_S) lvGrid->Items[17]->SubItems[Column]->Text = String::Format("{0:F3}", Extension.SCP_S); if (m_Extension[Index].SCP_SELECT != Extension.SCP_SELECT) lvGrid->Items[18]->SubItems[Column]->Text = String::Format("{0:F3}", Extension.SCP_SELECT); if (m_Extension[Index].SCP_START != Extension.SCP_START ) lvGrid->Items[19]->SubItems[Column]->Text = String::Format("{0:F3}", Extension.SCP_START ); if (m_Extension[Index].SCP_PS != Extension.SCP_PS ) lvGrid->Items[20]->SubItems[Column]->Text = String::Format("{0:F3}", Extension.SCP_PS ); } memcpy(&m_Extension[Index], &Extension, sizeof(SCP_EXTN)); } else { if (m_Status[Index] != Status) { for (int Row = 0; Row < lvGrid->Items->Count; Row++) { lvGrid->Items[Row]->SubItems[Column]->Text = String::Format("<n/a>"); } } } m_Status[Index] = Status; } // lvGrid->EndUpdate(); } }; }