用鼠标拖动文件到一个编辑框,然后释放,会产生一个怎么样的消息?
平常当用鼠标拖动文件到“运行”窗口的编辑框,然后释放,就能够得到文件的完整路径我想用Win32API写一个程序,在其中添加一个编辑框,使之与“运行”窗口的编辑框有同样的作...
平常当用鼠标拖动文件到“运行”窗口的编辑框,然后释放,就能够得到文件的完整路径
我想用Win32API写一个程序,在其中添加一个编辑框,使之与“运行”窗口的编辑框有同样的作用~
但是我不清楚拖动文件,并释放鼠标会产生一个什么样的消息
请大虾们帮帮忙啊~~~
有没有不借助MFC的啊,我现在只用Win32API啊~ 展开
我想用Win32API写一个程序,在其中添加一个编辑框,使之与“运行”窗口的编辑框有同样的作用~
但是我不清楚拖动文件,并释放鼠标会产生一个什么样的消息
请大虾们帮帮忙啊~~~
有没有不借助MFC的啊,我现在只用Win32API啊~ 展开
3个回答
展开全部
OnLButtonDown() 这个消息获取用户所选
OnLButtonUp() 。//这个消息处理释放鼠标后的操作
OnLButtonUp() 。//这个消息处理释放鼠标后的操作
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
c++ builder 的代码...
private: // User declarations
void __fastcall AcceptFiles(TMessage& Msg);
public: // User declarations
__fastcall TForm1(TComponent* Owner);
BEGIN_MESSAGE_MAP
MESSAGE_HANDLER(WM_DROPFILES,TMessage,AcceptFiles)
END_MESSAGE_MAP(TForm)
//-------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
DragAcceptFiles(this->Handle,true);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::AcceptFiles(TMessage& Msg)
{
const int m_nMaxFileNameLen=255;
int i,m_nCount;
char m_sFileName[m_nMaxFileNameLen];
m_nCount=DragQueryFile((HANDLE)Msg.WParam,0xffffffff,m_sFileName,m_nMaxFileNameLen);
for(i=0;i<m_nCount;i++)
{
DragQueryFile((HANDLE)Msg.WParam,i,m_sFileName,m_nMaxFileNameLen);
POINT mouse;
GetCursorPos(&mouse);
HWND hd = WindowFromPoint(mouse);
if (hd == Edit1->Handle) { //编辑框控件句柄
Edit1->Text = m_sFileName;
}
DragFinish((HANDLE)Msg.WParam);
}
private: // User declarations
void __fastcall AcceptFiles(TMessage& Msg);
public: // User declarations
__fastcall TForm1(TComponent* Owner);
BEGIN_MESSAGE_MAP
MESSAGE_HANDLER(WM_DROPFILES,TMessage,AcceptFiles)
END_MESSAGE_MAP(TForm)
//-------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
DragAcceptFiles(this->Handle,true);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::AcceptFiles(TMessage& Msg)
{
const int m_nMaxFileNameLen=255;
int i,m_nCount;
char m_sFileName[m_nMaxFileNameLen];
m_nCount=DragQueryFile((HANDLE)Msg.WParam,0xffffffff,m_sFileName,m_nMaxFileNameLen);
for(i=0;i<m_nCount;i++)
{
DragQueryFile((HANDLE)Msg.WParam,i,m_sFileName,m_nMaxFileNameLen);
POINT mouse;
GetCursorPos(&mouse);
HWND hd = WindowFromPoint(mouse);
if (hd == Edit1->Handle) { //编辑框控件句柄
Edit1->Text = m_sFileName;
}
DragFinish((HANDLE)Msg.WParam);
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
产生 WM_DROPFILES (0x0233)消息
然后通过下面这几个系统API函数进行操作
nFileCount=::DragQueryFile(hDropInfo,0xFFFFFFFF,NULL,MAX_PATH);
::DragQueryFile (hDropInfo,i, &lpszFileName[0],MAX_PATH);
::DragFinish (hDropInfo); // 释 放 内 存
hDropInfo是从WM_DROPFILES 消息来的,但是具体是哪个参数则不知道,因为我不是用SDK编程。
然后通过下面这几个系统API函数进行操作
nFileCount=::DragQueryFile(hDropInfo,0xFFFFFFFF,NULL,MAX_PATH);
::DragQueryFile (hDropInfo,i, &lpszFileName[0],MAX_PATH);
::DragFinish (hDropInfo); // 释 放 内 存
hDropInfo是从WM_DROPFILES 消息来的,但是具体是哪个参数则不知道,因为我不是用SDK编程。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询