系统右键问题

xiaoxiaoxuesheng 2003-08-21 08:13:39
请问如何屏蔽系统右键?我用了一个TOpenDialog控键,但我不想在弹出的对话框里点右键时弹出删除等菜单,请问该如何处理?
...全文
19 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
jishiping 2003-08-22
  • 打赏
  • 举报
回复
有一点给忘了,需要在 TOpenDialog 的事件 OnShow 中,将 OldWinProc 重新置为 NULL。

void __fastcall TForm1::OpenDialog1Show(TObject *Sender)
{
OldWinProc = NULL;
}
jishiping 2003-08-21
  • 打赏
  • 举报
回复
在 TOpenDialog 的事件 OnFolderChange 里,改写 窗口的消息处理函数。下面是代码:

__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
OpenDialog1->Execute();
}
//---------------------------------------------------------------------------
static FARPROC OldWinProc = NULL;
LRESULT CALLBACK NewWinProc(HWND hWnd,
UINT uMsg, WPARAM wParam, LPARAM lParam)
{
if (uMsg==WM_CONTEXTMENU) return 1;

return CallWindowProc(OldWinProc, hWnd,
uMsg, wParam, lParam);
}

void __fastcall TForm1::OpenDialog1FolderChange(TObject *Sender)
{
HWND hWnd;

if (OldWinProc == NULL) {
hWnd = ::GetParent(OpenDialog1->
Handle);
hWnd = GetDlgItem(GetDlgItem(hWnd,
0x461), 0x01);
OldWinProc = (FARPROC)SetWindowLong(
hWnd, GWL_WNDPROC, (long)NewWinProc);
}
}
//---------------------------------------------------------------------------
jishiping 2003-08-21
  • 打赏
  • 举报
回复
在 TOpenDialog 的事件 OnFolderChange 里,改写 窗口的消息处理函数。下面是代码:

__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
OpenDialog1->Execute();
}
//---------------------------------------------------------------------------
static FARPROC OldWinProc = NULL;
LRESULT CALLBACK NewWinProc(HWND hWnd,
UINT uMsg, WPARAM wParam, LPARAM lParam)
{
if (uMsg==WM_CONTEXTMENU) return 1;

return CallWindowProc(OldWinProc, hWnd,
uMsg, wParam, lParam);
}

void __fastcall TForm1::OpenDialog1FolderChange(TObject *Sender)
{
HWND hWnd;

if (OldWinProc == NULL) {
hWnd = ::GetParent(OpenDialog1->
Handle);
hWnd = GetDlgItem(GetDlgItem(hWnd,
0x461), 0x01);
OldWinProc = (FARPROC)SetWindowLong(
hWnd, GWL_WNDPROC, (long)NewWinProc);
}
}
//---------------------------------------------------------------------------

13,825

社区成员

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

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