社区
C++ Builder
帖子详情
关于form的,程序运行时怎么最小化或移动form??
zxx_0405
2009-03-12 10:16:30
我的程序运行时,不对form上的控件操作时是可以移动,最小化,最大化的,一旦有控件事件在运行,form就象死掉了一样,不能动了,不能进行任何操作。怎么样才能对它进行移动,最小化,最大化等的操作呢?谢谢了!!!
...全文
125
17
打赏
收藏
关于form的,程序运行时怎么最小化或移动form??
我的程序运行时,不对form上的控件操作时是可以移动,最小化,最大化的,一旦有控件事件在运行,form就象死掉了一样,不能动了,不能进行任何操作。怎么样才能对它进行移动,最小化,最大化等的操作呢?谢谢了!!!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
17 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
zxx_0405
2009-03-17
打赏
举报
回复
#include <objbase.h>
Jim@luckeeinc.com
2009-03-12
打赏
举报
回复
在用dll裏的那個function的時候寫到一個新開的綫程裏
class myThread : public TThread
{
public:
__fastcall myThread(bool CreateSuspended, TFmyform *f);
private:
void __fastcall Execute(void);
void __fastcall MyWork();
TFmyform *myForm; //這裡是你跑得那個Form
};
_fastcall myThread::myThread(bool CreateSuspended, TFmyform *f):TThread(true)
{
FreeOnTerminate=true;
Resume();
this->myForm = f;
}
void __fastcall myThread::MyWork()
{
this->myForm->function(); //調用Form中的函數
}
void __fastcall myThread::Execute()
{
CoInitialize(NULL);
MyWork();
}
zxx_0405
2009-03-12
打赏
举报
回复
我的循环在DLL中,且是没有form的,是不是只能用多线程解决了??
zxx_0405
2009-03-12
打赏
举报
回复
没有多线程
有循环,但不是死循环,只是耗用时间较长 ,只有循环结束了我才能对form操作
yumikoo
2009-03-12
打赏
举报
回复
还有中可能,你使用了多线程?且线程里对控件运行的同步没有发生并行,产生死锁
Jim@luckeeinc.com
2009-03-12
打赏
举报
回复
[Quote=引用 1 楼 yumikoo 的回复:]
你是不是在什么地方加了死循环?
在循环里加Application->ProcessMessages()
[/Quote]
應該是你在對某個控件操作的時候那個控件裏的代碼處理的時候佔用了較大的系統資源,比如死循環或者其他處理較慢的代碼可以試一下樓上的方法或者為處理較慢的代碼開一個綫程用多綫程來解決
hemiya
2009-03-12
打赏
举报
回复
可能你的事件循环调用了,例如a调用b,b又调用a了,陷入重复调用了.
BORLANDSUN
2009-03-12
打赏
举报
回复
楼上正解.
yumikoo
2009-03-12
打赏
举报
回复
你是不是在什么地方加了死循环?
在循环里加Application->ProcessMessages()
fairchild811
2009-03-12
打赏
举报
回复
恩,构造时用true就是挂起
Jim@luckeeinc.com
2009-03-12
打赏
举报
回复
myThread *MyThread=new myThread(true,this); //這裡第一個參數是true,意思是說綫程創建后進入挂起,知道執行到Resume()函數
調用Resume()的時候綫程啓動,直到Execute()結束
FreeOnTerminate其實就是實時銷毀當綫程結束后自動銷毀掉
所以一般用的時候只要
myThread *MyThread=new myThread(true,this);
MyThread->FreeOnTerminate=true;
就可以了
zxx_0405
2009-03-12
打赏
举报
回复
[Quote=引用 13 楼 zxx_0405 的回复:]
是不是可以这样理解?
最终是把dll那个函数放在MyWork里就可以了?
比如button1click执行的话
button1click事件里
{
myThread *MyThread=new myThread(true,this);
MyThread->FreeOnTerminate=true;
//这里不要 MyThread->MyWork()?
}
[/Quote]
上边出笑话了,MyThread->FreeOnTerminate=true;这个就是释放线程的
zxx_0405
2009-03-12
打赏
举报
回复
是不是可以这样理解?
最终是把dll那个函数放在MyWork里就可以了?
比如button1click执行的话
button1click事件里
{
myThread *MyThread=new myThread(true,this);
MyThread->FreeOnTerminate=true;
//这里不要 MyThread->MyWork()?
delete MyThread;
}
Jim@luckeeinc.com
2009-03-12
打赏
举报
回复
如果你在Form上用一個button 裏面寫
for(int i = 0; i < 10000000; i++)
{
String str = IntToStr(i);
}
在點了button后這個Form上的其它控件就不能動
這個就是LZ遇到的情況
只要單獨給綫程 去執行那段很耗時的代碼 就不會影響其他了
aozhi
2009-03-12
打赏
举报
回复
单线程?
得用多线程吧?
Jim@luckeeinc.com
2009-03-12
打赏
举报
回复
HINSTANCE mydll;
mydll=LoadLibrary("xxx.dll");
比如在你的form裏有個函數是調用這個dll的
void myFunction()
{
......GetProcAddress(mydll, ".....");
}
把myfunction寫在剛剛那個類的MyWork裏
void __fastcall myThread::MyWork()
{
this->myForm->myFunction(); //調用Form中的函數
}
用的時候new 一下這個類就好了
myThread *MyThread=new myThread(true,this);
MyThread->FreeOnTerminate=true;
zxx_0405
2009-03-12
打赏
举报
回复
[Quote=引用 8 楼 Ring_Pt 的回复:]
在用dll裏的那個function的時候寫到一個新開的綫程裏
class myThread : public TThread
{
public:
__fastcall myThread(bool CreateSuspended, TFmyform *f);
private:
void __fastcall Execute(void);
void __fastcall MyWork();
TFmyform *myForm; //這裡是你跑得那個Form
};
_fastcall myThread::myThread(bool CreateSuspended, TFmyform *f):TThread(true)
{
FreeOnTermi…
[/Quote]
这段代码是放在调用dll的程序的吧
没执行线程的东西
功能:
Form
窗口最大化时,控件相对位置变化的问题 (学习日记2016-12-23)
问题描述:在设计
Form
窗体的时候,碰到的一个问题就是说已经设置了
Form
窗口的windowstate属性为maximum(即窗口的初始打开状态为全屏显示最大化,还可以设置
最小化
),再在控件中设计一些控件时,在运行的时候会出现,窗口会最大化,但是窗口内的控件的位置并没有变化,还在原来的位置不变。如图所示的一个label控件位置没有变化。 解决方法:经过查询得知,是因为label控件的an
C# win
form
窗体UI美化后实现最大化、
最小化
、还原、关闭、窗体
移动
等等-2023/1/11
C# win
form
窗体UI美化后实现最大化、
最小化
、还原、关闭、窗体
移动
等功能
C# 2017
Form
的常用的属性、方法和事件
2017
Form
的常用的属性、方法和事件 MaximizeBox 和MinimizeBox 属性用于确定窗体标题栏的右上角的最大化、
最小化
按钮是否可用。也可以在
程序
运行时
,使用代码来设置窗体的MaximizeBox属性,其结果与在属性窗口中直接设置一致 如this.MaximizeBox = false; Size 分成Width 和Height 两个属性 StartPosition 初始位置,有5个值: 默认的属性值为Manual,窗体的初始位置由Location属性确定;.
用VB6.0实现将窗体
最小化
到系统托盘区 两个方法均测试部分有效或完全有效
用VB6.0实现将窗体
最小化
到系统托盘区 两个方法均测试部分有效或完全有效 1、新建立一个VB6工程,将
Form
1的ShowInTaskBar属性设置为False 2、菜单:工程--添加模块 按“打开”这样就添加了一个新模块,名为Module1,保存为Module1.bas 3、在Module1中写下如下代码: Option Explicit Public Const MAX_TOOLT
使用.net编写windows
程序
,对
form
的设置
1、让窗体在启动时在指定位置出现
form
1.StartPosition Manual CenterScreen WindowsDefaultLocation (default) WindowsDefaultBounds CenterParent 只有在窗体启动前设置才有效。 2、设置窗体的图标
C++ Builder
13,825
社区成员
102,679
社区内容
发帖
与我相关
我的任务
C++ Builder
C++ Builder相关内容讨论区
复制链接
扫一扫
分享
社区描述
C++ Builder相关内容讨论区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章