高手关注:用VB实现像FlashGet一样的小窗口。

Matrix1 2000-09-04 09:15:00
如何用VB实现像flashget或网络蚂蚁一样的小窗口,支持拖拉对象进去,并可进行相应的操作,请高手详细指点,最好有程序。
...全文
116 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
shines77 2000-09-05
  • 打赏
  • 举报
回复
常居顶端然后处理拖放,如此简单的问题,比VC++快多了!
youngeryang 2000-09-05
  • 打赏
  • 举报
回复
按shines说的做:
做一个边框属性为fixed sigle的小窗口,然后在其Form_Load中调用以下的函数,设置它常居顶端。
SetWindowPos Me.hWnd, HWND_TOPMOST, 0&, 0&, 0&, 0&, SWP_NOSIZE Or SWP_NOMOVE
然后处理拖放。
kill_kill01 2000-09-04
  • 打赏
  • 举报
回复
他要的是VB代码!
U皮特U 2000-09-04
  • 打赏
  • 举报
回复
这个问题我以前回答过,再贴一遍吧!

创建一个继承CFrameWnd的类- CDownloadBasket
在该类的PreCreateWindow(CREATESTRUCT& cs) 中:
cs.style &= ~WS_CAPTION;
cs.style &= ~WS_SYSMENU;
cs.style ¦= WS_DLGFRAME ¦ WS_EX_WINDOWEDGE ¦ WS_EX_ACCEPTFILES;
去除标题栏、系统菜单等。
// 以下使得用鼠标按住窗口可以拖动窗口
void CDownloadBasket::OnLButtonDown(UINT nFlags, CPoint point)
{
PostMessage(WM_NCLBUTTONDOWN, HTCAPTION, MAKELPARAM(point.x, point.y));
}
//以下设置本窗口为顶级窗口,并替换视为可以处理拖放事件的视
int CDownloadBasket::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CFrameWnd::OnCreate(lpCreateStruct) == -1)
return -1;

g_downloadBasket = this; // 全局变量,在别处可以操作本窗口

CRect rect;
GetClientRect(&rect);
m_DLBView = new CDLBasketView();
m_DLBView->Create(NULL, "",
WS_VISIBLE ¦ WS_CHILD, rect, this, 12453);
SetActiveView((CView*)m_DLBView);

SetWindowPos(&wndTopMost, 0, 0, 0, 0, SWP_NOSIZE ¦ WS_EX_TOPMOST);
return 0;
}

创建一个继承CView的类 CDLBasketView,
分别处理它的OnDragEnter、OnDragOver、OnDrop等,处理拖放
在它的OnLButtonDown中,用g_downloadBasket->OnLButtonDown(nFlags, point); 将鼠标拖动窗口的处理交给框架窗口。

// 显示这个窗口
m_downloadBasket = new CDownloadBasket();
ASSERT_VALID(m_downloadBasket);
BOOL bResult = m_downloadBasket->Create(NULL,
_T(""),
WS_POPUP,
CRect(0,0,42,42),//CFrameWnd::rectDefault,
AfxGetApp()->m_pMainWnd );
ASSERT(bResult);
m_downloadBasket->ShowWindow(SW_NORMAL);

7,759

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧