Проблема FormBorderStyle - PullRequest
       22

Проблема FormBorderStyle

0 голосов
/ 29 апреля 2018

Обнаружена проблема с различными режимами FormBorderStyle. В режиме «Нет» все работает нормально.

Screenshot 1

Но как только я меняю режим на что-то еще - это происходит:

Screenshot 2

Я получаю странную пустую область вокруг. Как и на обеих осях отключены границы

void InitializeComponent(void)
{
    this->SuspendLayout();
    // 
    // MainUI
    // 
    this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::None;
    this->ClientSize = System::Drawing::Size(320, 250);
    this->FormBorderStyle = System::Windows::Forms::FormBorderStyle::FixedToolWindow;
    this->MaximizeBox = false;
    this->MinimizeBox = false;
    this->Name = L"MainUI";
    this->Text = L"Dota 2 Efficiency Application";
    this->ResumeLayout(false);
}
[STAThreadAttribute]
int Main(array<System::String ^> ^args){
Application::EnableVisualStyles();
Application::SetCompatibleTextRenderingDefault(false);

// Creating a new form
MainUI^ form = gcnew MainUI();

// Creating a new ListView and adding it to the form
createList();
form->globalTimerInit();
form->Controls->Add(myGlobals::Globals::globalListView);
form->Controls->Add(myGlobals::Globals::labelForTimer);
Application::Run(form);

return 0;
}

Когда я пытаюсь получить Bounds и ClientRectangle формы, он выдает следующее:

{X = 0, Y = 0, ширина = 336, высота = 284}
{X = 0, Y = 0, ширина = 320, высота = 250}

Похоже, это правильно, но район далеко.

Любой совет?

1 Ответ

0 голосов
/ 29 апреля 2018

У меня было несколько экземпляров __super :: WndProc (m); и это привело к такому поведению.

ui.h

#include "stdafx.h"
    ////////////////////////HOTKEYS////////////////////////
protected: // Function that defines a hotkey
    virtual void OnHandleCreated(EventArgs^ e) override {
        __super::OnHandleCreated(e);
        RegisterHotKey((HWND)this->Handle.ToPointer(), 1,
            MOD_NOREPEAT, (UINT)Keys::NumPad3);
        RegisterHotKey((HWND)this->Handle.ToPointer(), 2,
            MOD_NOREPEAT, (UINT)Keys::NumPad2);
        RegisterHotKey((HWND)this->Handle.ToPointer(), 3,
            MOD_NOREPEAT, (UINT)Keys::NumPad1);
        RegisterHotKey((HWND)this->Handle.ToPointer(), 4,
            MOD_NOREPEAT, (UINT)Keys::NumPad0);
    }

protected: // Function that executes code on hotkey
    virtual void WndProc(Message% m) override {
        if (m.Msg == WM_HOTKEY && m.WParam.ToInt32() == 1) {
            //roshTimer();
        }
        if (m.Msg == WM_HOTKEY && m.WParam.ToInt32() == 2) {
            //wardPurchased();
        }
        __super::WndProc(m);
        if (m.Msg == WM_HOTKEY && m.WParam.ToInt32() == 3) {
            //globalTimerStartPause();
        }
        __super::WndProc(m);
        if (m.Msg == WM_HOTKEY && m.WParam.ToInt32() == 4) {
            //reserved for future needs
        }
        __super::WndProc(m);
    }
    ///////////////////////////////////////////////////////

stdafx.h

#pragma once

#include <Windows.h>
#pragma comment(lib, "user32.lib")
...