怎么用一个键显示和隐藏form!!!!

rokyo 2003-02-06 07:48:32
我用的是hook 现在
if(GetAsyncKeyState(VK_F12){ ShowForm();}


bool ShowForm(Tfmshow *Form1)
{
bool FormExist=false;
for(int i=0;i<Screen->FormCount;i++)
if(Screen->Forms[i]->ClassType()==Form1->ClassType())
{
FormExist=true;
break;}
if(FormExist==false)
{ Form1=new Tfmshow(NULL);
WndHandle = FindWindow(NULL,"nage");
ShowWindow(WndHandle,SW_HIDE);
ShowWindow(Form1->Handle,SW_SHOW);
returnValue=FALSE;
}
if(FormExist==true)
{
ShowWindow(Form1->Handle,SW_HIDE);
returnValue=TRUE;
}
else if(returnValue==true)
{
ShowWindow(Form1->Handle,SW_SHOW);
ShowWindow(WndHandle,SW_HIDE);
returnValue=FALSE;
}
return true;
}
我是想当我用F12是后出现Form1再次按F12时隐藏Form1 (不是关掉) 当我再次按F12时
又显示Form1
我这段有问题 我按F12老是新建Form 按几下就有几个
不能隐藏
为什么??
...全文
6 点赞 收藏 6
写回复
6 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
zihan 2003-02-10
你为什么要用钩子啊?
你注册一个系统热键不就很好用了吗?只要一句话就可以搞定了,绝对不会出问题的
回复
lianghe 2003-02-09
你自己建一个XXX.DEF的文件(文本的),加入工程里就行了。
那两句放在源程序的前面。
回复
rokyo 2003-02-07
大哥我的源程序里没有一个叫*.def的文件呀
我这是个带vcl的dll
#pragma option -zRSHSEG // 改变缺省数据段名
#pragma option -zTSHCLASS // 改变缺省数据类名
者两句放在那里呀
回复
lianghe 2003-02-06
// 纯文本文件 Hook.def的内容如下:
// SEGMENTS SHSEG CLASS 'SHCLASS' SHARED

#pragma option -zRSHSEG // 改变缺省数据段名
#pragma option -zTSHCLASS // 改变缺省数据类名

以上用来声明全局数据段,要是不在DLL中和仅HOOK本程序的可以不用。
bool FormExist=false;

if(GetAsyncKeyState(VK_F12){ ShowForm();}


bool ShowForm(Tfmshow *Form1)
{
if(!FormExist)
{ Form1=new Tfmshow(NULL);
FormExist=true;
WndHandle = FindWindow(NULL,"nage");
ShowWindow(WndHandle,SW_HIDE);
ShowWindow(Form1->Handle,SW_SHOW);
returnValue=FALSE;
}
else
{
ShowWindow(Form1->Handle,SW_HIDE);
returnValue=TRUE;
}
else if(returnValue==true)
{
ShowWindow(Form1->Handle,SW_SHOW);
ShowWindow(WndHandle,SW_HIDE);
returnValue=FALSE;
}
return true;
}
回复
rokyo 2003-02-06
我还是没懂你的意思 如果我先new 怎么做修改一下我的代码好吗?
我的代码到底有什么问题 当我按F12时候都是新SHOW出FORM
WHY????
回复
叶子哟 2003-02-06
当然了,你是new嘛,你可以先new出来,再隐藏,需要的时候show出来!
回复
相关推荐
发帖
VCL组件使用和开发
创建于2007-08-02

586

社区成员

C++ Builder VCL组件使用和开发
申请成为版主
帖子事件
创建了帖子
2003-02-06 07:48
社区公告
暂无公告