На главную

On-line справка по Win32 API

Написать письмо
БЕСПЛАТНАЯ ежедневная online лотерея! Выигрывай каждый день БЕСПЛАТНО!
Список всех статей A-B-C-D-E-F-G-H-I-J-K-L-M-N-O-P-Q-R-S-T-U-V-W-X-Y-Z | Скачать Вниз

Beginning the Drag Operation



The following function is intended to be called in response to a mouse button-down message, such as WM_LBUTTONDOWN. The function determines whether the user has clicked within the bounding rectangle of the image. If the user has clicked, the function captures the mouse input, erases the image from the client area, and calculates the position for the hot spot within the image. The function sets the hot spot to coincide with the hot spot of the mouse cursor. Then the function begins the drag operation by calling ImageList_BeginDrag.

// StartDragging - begins dragging a bitmap.
// Returns TRUE if successful or FALSE otherwise.
// hwnd - handle of the window in which the bitmap is dragged
// ptCur - coordinates of the cursor
// himl - handle of the image list
//
// Global variables
// g_rcImage - bounding rectangle of the image to drag
// g_nImage - index of the image
// g_ptHotSpot - location of the image's hot spot
// g_cxBorder and g_cyBorder - width and height of border

// g_cyCaption and g_cyMenu - height of title bar and menu bar
extern RECT g_rcImage;
extern int g_nImage;
extern POINT g_ptHotSpot;

BOOL StartDragging(HWND hwnd, POINT ptCur, HIMAGELIST himl)
{
// Return if the cursor is not in the bounding rectangle of
// the image.
if (!PtInRect(&g_rcImage, ptCur))
return FALSE;

// Capture the mouse input.
SetCapture(hwnd);

// Erase the image from the client area.
InvalidateRect(hwnd, &g_rcImage, TRUE);

UpdateWindow(hwnd);

// Calculate the location of the hot spot, and save it.
g_ptHotSpot.x = ptCur.x - g_rcImage.left;
g_ptHotSpot.y = ptCur.y - g_rcImage.top;

// Begin the drag operation.
if (!ImageList_BeginDrag(himl, g_nImage,
g_ptHotSpot.x, g_ptHotSpot.y))
return FALSE;

// Set the initial location of the image, and make it visible.
// Because the ImageList_DragEnter function expects coordinates to

// be relative to the upper-left corner of the given window, the
// width of the border, title bar, and menu bar need to be taken
// into account.
ImageList_DragEnter(hwnd, ptCur.x + g_cxBorder,
ptCur.y + g_cyBorder + g_cyCaption + g_cyMenu);

g_fDragging = TRUE;

return TRUE;
}



Пригласи друзей и счет твоего мобильника всегда будет положительным!
Предыдущая статья
 
Сайт Народ.Ру Интернет
Следующая статья
Пригласи друзей и счет твоего мобильника всегда будет положительным!

Начало Действия Помехи



Следующее функции собирается быть вызвано в ответ на кнопку-вниз сообщение мыши, как например, WM_LBUTTONDOWN. Функция определяет щелкнул потребитель в пределах прямоугольника bounding образа. Если потребитель щелкнул бы, функция захватывает вклад мыши, стирает образ из области клиента, и вычисляет позицию для горячей точки в пределах образа. Функция устанавливает горячую точку, чтобы совпадать с горячей точкой курсора мыши. Затем функция начинает действие помехи вызывая ImageList_BeginDrag.

// StartDragging - НАЧИНАЕТ тащить побитовое отображение.
// ИСТИНА Возврата если успешный или ЛОЖНЫЙ в противном случае.
// hwnd - ручка окна в котором побитовое отображение потащено // ptCur - координаты курсора // himl - ручка списка образа
//
// Глобальные переменные
// g_rcImage - bounding прямоугольник образа, чтобы тащить // g_nImage - индекс образа // g_ptHotSpot - позиция горячей точки / образа/ g_cxBorder и g_cyBorder - ширина и высота границы

// g_cyCaption и g_cyMenu - высота зоны названия и зона меню extern RECT g_rcImage;
extern int g_nImage;
extern ТОЧКА g_ptHotSpot;

BOOL StartDragging(HWND hwnd, ТОЧКА ptCur, HIMAGELIST himl)
{
// Возврат если курсор - не в прямоугольнике bounding // образ.
если (!PtInRect(&g_rcImage, ptCur)) ОБРАТНАЯ ЛОЖЬ;

// Сбор ввод мыши.
SetCapture(hwnd);

// Выстирайте образ из области клиента.
InvalidateRect(hwnd, &g_rcImage, ИСТИНА);

UpdateWindow(hwnd);

// Вычислите позицию горячей точки и сохраняйте это.
g_ptHotSpot.x = ptCur.x - g_rcImage.left;
g_ptHotSpot.y = ptCur.y - g_rcImage.top;

// Начните операцию помехи.
если (!ImageList_BeginDrag(himl, g_nImage, g_ptHotSpot.x, g_ptHotSpot.y)) обратная ЛОЖЬ;

// Установленный начальная позиция образа и делает это видимым.
// Поскольку функция ImageList_DragEnter ожидает координаты, чтобы

// быть относительно верхнего левого угла данного окна, // ширина граничной, зоны названия, и зона меню должна быть взята // на счет.
ImageList_DragEnter(hwnd, ptCur.x + g_cxBorder, ptCur.y + g_cyBorder + g_cyCaption + g_cyMenu);

g_fDragging = ИСТИНА;

возвращайтесь ВЕРНО;
}



Вверх Version 1.3, Oct 26 2010 © 2007, 2010, mrhx Вверх
 mrhx software  Русский перевод OpenGL  Русский перевод Win32 API
 
Используются технологии uCoz