nim_duilib/examples/multi_browser/dragdrop/drag_form.h

82 lines
1.9 KiB
C
Raw Normal View History

2019-04-19 17:19:57 +08:00
#pragma once
/** @class DragForm
* @brief ģ<EFBFBD><EFBFBD>ϵͳ<EFBFBD><EFBFBD>ק<EFBFBD><EFBFBD><EFBFBD>ܵİ<EFBFBD>͸<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊʹ<EFBFBD><EFBFBD><EFBFBD>˵ͼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>̹<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һЩ<EFBFBD><EFBFBD>ȫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @copyright (c) 2016, NetEase Inc. All rights reserved
* @author Redrain
* @date 2019/3/20
*/
class BitmapControl;
class DragForm : public ui::WindowImplBase
{
public:
/**
* <EFBFBD>ͼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>̹<EFBFBD><EFBFBD>ӵĻص<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param[in] nCode <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param[in] wParam <EFBFBD><EFBFBD><EFBFBD>Ӳ<EFBFBD><EFBFBD><EFBFBD>
* @param[in] lParam <EFBFBD><EFBFBD><EFBFBD>Ӳ<EFBFBD><EFBFBD><EFBFBD>
* @return LRESULT <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
static LRESULT CALLBACK LowLevelMouseProc(int nCode, WPARAM wParam, LPARAM lParam);
/**
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ק<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param[in] bitmap <EFBFBD><EFBFBD>קЧ<EFBFBD><EFBFBD>λͼ
* @param[in] pt_offset <EFBFBD><EFBFBD>קͼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƫ<EFBFBD><EFBFBD>
* @return void <EFBFBD>޷<EFBFBD><EFBFBD><EFBFBD>ֵ
*/
static void CreateCustomDragImage(HBITMAP bitmap, POINT pt_offset);
/**
* <EFBFBD>ر<EFBFBD><EFBFBD>Զ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ק<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @return void <EFBFBD>޷<EFBFBD><EFBFBD><EFBFBD>ֵ
*/
static void CloseCustomDragImage();
public:
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E9BAAF>
virtual std::wstring GetSkinFolder() override;
virtual std::wstring GetSkinFile() override;
virtual std::wstring GetWindowClassName() const override;
virtual UINT GetClassStyle() const override;
/**
* <EFBFBD><EFBFBD><EFBFBD>ݿؼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ؼ<EFBFBD>
* @param[in] pstrClass <EFBFBD>ؼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @return Control* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀؼ<EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD>
*/
virtual ui::Control* CreateControl(const std::wstring& pstrClass) override;
/**
* <EFBFBD><EFBFBD><EFBFBD>ڳ<EFBFBD>ʼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @return void <EFBFBD>޷<EFBFBD><EFBFBD><EFBFBD>ֵ
*/
virtual void InitWindow() override;
private:
DragForm();
~DragForm(){};
/**
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>קЧ<EFBFBD><EFBFBD><EFBFBD>Ĵ<EFBFBD><EFBFBD><EFBFBD>
* @param[in] bitmap <EFBFBD><EFBFBD>קЧ<EFBFBD><EFBFBD>λͼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param[in] pt_offset <EFBFBD><EFBFBD>קͼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƫ<EFBFBD><EFBFBD>
* @return void <EFBFBD>޷<EFBFBD><EFBFBD><EFBFBD>ֵ
*/
static DragForm* CreateDragForm(HBITMAP bitmap, POINT pt_offset);
/**
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>קЧ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>λͼ
* @param[in] bitmap <EFBFBD><EFBFBD>קЧ<EFBFBD><EFBFBD>λͼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @return void <EFBFBD>޷<EFBFBD><EFBFBD><EFBFBD>ֵ
*/
void SetDragImage(HBITMAP bitmap);
public:
static const LPCTSTR kClassName;
private:
static HHOOK s_mouse_hook;
static DragForm *s_drag_form;
static POINT s_point_offset;
BitmapControl *bitmap_control_;
};