C#: Как перетащить от формой и ее средствами управления?

Следует иметь в виду, что Windows имеет управление виртуальной памятью, и JVM только нужна память, которая является непрерывна в ее адресном пространстве . Так, другие программы, работающие на системе, не должны обязательно влиять на Ваш размер "кучи". Что будет стоять на пути, DLL, который загружается в в Ваше адресное пространство. К сожалению, оптимизация в Windows, которая минимизирует перемещение DLL во время соединения, делает его, более вероятно у Вас будет фрагментированное адресное пространство. Вещи, которые, вероятно, включат к Вашему адресному пространству кроме обычного материала, включают защитное программное обеспечение, программное обеспечение CBT, шпионское ПО и другие формы вредоносного программного обеспечения. Вероятными причинами различий являются различные патчи безопасности, C версии среды выполнения, и т.д. Драйверы устройств и другие биты ядра имеют свое собственное адресное пространство (другие 2 ГБ 4 ГБ 32-разрядного пространства).

Вы могли попытка, проходящая Вашу привязку DLL в Вашем процессе JVM и взгляде на попытку повторно основывать Ваш DLL в к более компактному адресному пространству. Не забава, но если Вы являетесь отчаянными...

, С другой стороны, можно просто переключиться на 64-разрядный Windows и 64-разрядную JVM. Несмотря на то, что предложили другие, в то время как это уничтожит больше RAM, Вы будете иметь очень [еще 112] непрерывное виртуальное адресное пространство, и выделение 2 ГБ непрерывно было бы тривиально.

6
задан David Refoua 16 December 2018 в 09:38
поделиться

2 ответа

На самом деле, я нашел решение здесь .

public const int WM_NCLBUTTONDOWN = 0xA1;
public const int HTCAPTION = 0x2;

[DllImport("User32.dll")]
public static extern bool ReleaseCapture();
[DllImport("User32.dll")]
public static extern int SendMessage(IntPtr hWnd, int Msg, int wParam, int lParam);

// Paste the below code in the your label control MouseDown event
if (e.Button == MouseButtons.Left)
{
    ReleaseCapture();
    SendMessage(Handle, WM_NCLBUTTONDOWN, HTCAPTION, 0);
}

оно работает.

Кроме того, в моем приведенном выше коде, если требуется изменение размера, если необходимо изменить оператор to

        if (m.Msg == WM_NCHITTEST)
            if ((int)m.Result == HTCLIENT)
                m.Result = (IntPtr)HTCAPTION;
4
ответ дан 17 December 2019 в 04:48
поделиться

Используйте Spy ++, чтобы проанализировать, какие элементы управления получают какие сообщения Windows, и тогда вы будете знать, что вам нужно захватывать.

Не вдаваясь в подробности вашего кода, я представляю себе этот дочерний элемент управления в главном окне вы получаете сообщения, а не форму, и вы хотите ответить на некоторые из них конкретно.

1
ответ дан 17 December 2019 в 04:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: