Отправляет email-рассылки с помощью сервиса Sendsay

Anton Vatchenko

  Все выпуски  

Anton Vatchenko #4


Информационный Канал Subscribe.Ru

HotStudio 2.2 не будет

Все последнее время я работал над новой версией HotStudio. Там ожидалось множество различных дополнений и усовершенствований, в том числе создавался профессиональный сэмплер. В нем планировалось введение Piano Roll, ADSR и много другого. И вдруг у меня появилась идея о другой технологии, которая будет очень удобна для пользователей (похожее озарение было перед версией 2). Я подумал: зачем доделывать программу, если следующая версия будет абсолютно другой, и не будет базироваться на старой. Поэтому было принято решение заниматься версией 2.3, которая, я думаю, будет лучшей из всех предыдущих! Все держится в секрете, но могу сказать одно: 2.3 - это объединение первой и второй версии, где будут возможности и реальной музыкальной студии, и обработанного заранее звука. Ждите! Это, конечно будет не очень скоро.

Перемещение самодельных окон

Я решил начать небольшой раздел, который может привлечь немного народу в рассылку. Пусть здесь будет несколько секретов реализации, или советов для программистов.

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

BOOL bMove;
short mx, my;

void Util_MoveD(HWND hWnd, short x, short y)
{
    bMove=TRUE;
    mx=x;
    my=y;
}

void Util_MoveM(HWND hWnd, short x, short y)
{
    if(bMove)
    {
        RECT rect;
        GetWindowRect(hWnd, &rect);
        POINT pt={rect.left, rect.top};
        ScreenToClient(hMainWnd, &pt);
        SetWindowPos(hWnd, 0, pt.x+x-mx, pt.y+y-my, rect.right-rect.left, rect.bottom-rect.top, 0);
    }
}

void Util_MoveU()
{
    bMove=FALSE;
}

Эта часть может быть определена в каком-то отдельном модуле. Глобальные переменные не вызывают никаких проблем, так как считается, что два окна нельзя одновременно перетащить. Для функций нужны хэндл окна, и координаты мыши. Первая функция вызывается, когда пользователь нажал кнопку мыши в нужном месте окна, где возможно осуществление перемещения. Вторая - когда производится перемещение. Третья - когда отпускается кнопка мыши, и завершается перемещение. Также рекомендую при нажатии и отпускании кнопок мыши использовать функции SetCapture и ReleaseCapture соответственно, чтобы при выходе за пределы окна не происходило потерь перемещения.


Subscribe.Ru
Поддержка подписчиков
Другие рассылки этой тематики
Другие рассылки этого автора
Подписан адрес:
Код этой рассылки: culture.news.antonv
Отписаться
Вспомнить пароль

В избранное