程序运行过程中动态改变控件大小的方法

程序|动态|过程|控件

在程序运行期间改变控件大小要用到WindowsAPI函数
以下是主要的代码

[DllImport("user32.dll", EntryPoint="GetWindowLong")]
public static extern int GetWindowLong (
int hwnd,
int nIndex
);
[DllImport("user32.dll", EntryPoint="SetWindowLong")]
public static extern int SetWindowLong (
int hwnd,
int nIndex,
int dwNewLong
);
[DllImport("user32.dll", EntryPoint="SetWindowPos")]
public static extern int SetWindowPos (
int hwnd,
int hWndInsertAfter,
int x,
int y,
int cx,
int cy,
int wFlags
);
public const int GWL_STYLE = (-16);
public const int WS_THICKFRAME = 0x40000;
const int SWP_NOSIZE = 0x1;
const int SWP_NOMOVE = 0x2;
const int SWP_NOZORDER = 0x4;
const int SWP_FRAMECHANGED = 0x20 ;
private void button1_Click(object sender, System.EventArgs e)
{
int style = GetWindowLong((int)this.textBox1.Handle,GWL_STYLE);
style |=WS_THICKFRAME;
SetWindowLong((int)this.textBox1.Handle,GWL_STYLE,style);
SetWindowPos((int)this.textBox1.Handle,(int)this.Handle,0,0,0,0,SWP_NOZORDER|SWP_NOSIZE|SWP_NOMOVE|SWP_FRAMECHANGED);
}

时间: 2024-10-10 20:59:33

程序运行过程中动态改变控件大小的方法的相关文章

MFC中动态创建控件以及事件响应实现方法_C 语言

本文实例讲述了MFC中动态创建控件以及事件响应实现方法,分享给大家供大家参考.具体实现方法如下: 动态控件是指在需要时由Create()创建的控件,这与预先在对话框中放置的控件是不同的. 一.创建动态控件: 为了对照,我们先来看一下静态控件的创建. 放置静态控件时必须先建立一个容器,一般是对话框,这时我们在对话框编辑窗口中,从工具窗口中拖出所需控件放在对话框中即可,再适当修改控件ID,设置控件属性,一个静态控件就创建好了,当对话框被显示时,其上的控件也会显示. 静态控件不需要调用Create()

如何在安装过程中部署DevExpress控件

在我的Winform开发框架或者WCF开发框架中,均提供多种界面样式选择,其中有一种就是界面效果比较好的DevExpress控件界面样式,但是我们一般在开发环境中使用,安装包的大小都很大,100多M,那么我们在部署到客户端应用的时候,该如何操作呢? 我们分析DevExpress的特殊补丁发现,他们是一个DOS批处理文件,主要是创建相应的目录,然后把DevExpress的三个特殊文件复制到对应的目录中,就可以实现DevExpress的正常使用了.那个DOS批处理文件内容如下所示. 一般我们部署客户

c++-各位大虾, 我想在程序里监视系统上运行的某些程序运行过程中是否报错异常,能实现吗? 怎么实现?

问题描述 各位大虾, 我想在程序里监视系统上运行的某些程序运行过程中是否报错异常,能实现吗? 怎么实现? 对于程序运行过程中卡死已经能检测,但是对于一些弹框类的运行出错却不知道怎么检测,请各位大虾指点迷津; 现在没有C币,如果回答是我想要的,我花钱补上 解决方案 这不就是编写一个华医生么(注:华医生是微软系统上负责处理应用程序崩溃的程序,就是你图上的"xxx已停止工作,Windows正在联机查找解决方案"),这是一个应用程序,是在用户模式下实现的,而并非在内核中实现,其实华医生也可以卸

多线程-在html中调用ocx组件,其click事件在运行过程中如何改变按钮状态?

问题描述 在html中调用ocx组件,其click事件在运行过程中如何改变按钮状态? 20C 我在做一个简单的网页demo,使用html语言调用ocx组件的方式完成前端功能加载和运行,我使用了一个按钮来调用ocx组件.我现在的问题是:我需要通过UI界面来清楚表示ocx组件的运行进度,比如:点击"执行"按钮,在执行过程中,按钮框变成"正在执行..."或者增加某种进度提示信息,当ocx组件执行完成后,按钮状态能够还原.我使用了很多方式,比如:1.增加进度条:2.通过定时

c# winfrom项目,webbrower控件中加载页面过程中导致timer控件显示时间会停一小会

问题描述 c# winfrom项目,webbrower控件中加载页面过程中导致timer控件显示时间会停一小会 在C# Winfrom项目中,from窗体中,有一个webbrower控件用于加载网页,在webbrower控件内放了一个label控件(用于显示当前时间),还有一个timer控件(用于控制label显示时间,显示格式为:hh:mm:ss,). 目前遇到个问题,当webbrower控件用于加载数据量较大的网页时,在网页加载的过程中,会导致label控件显示时间中的秒时, 会停顿两至三秒

基于MFC的ActiveX控件,如何实现运行时,用户可动态调整控件大小和位置?

问题描述 基于MFC的ActiveX控件,如何实现运行时,用户可动态调整控件大小和位置? 基于MFC的ActiveX控件,如何实现运行时,用户可动态调整控件大小和位置? 请大神们帮帮忙.在线等. 解决方案 调整控件大小是宿主程序的事,不关activex 即便不写任何代码,都是可以调整大小的,只是如果你不写代码,调整控件大小,里面的内容不会跟着缩放,而是保持不变,如果尺寸变小,右下角的东西会看不见. 解决方案二: 在OnSize中写可动态调整控件大小和位置的代码 解决方案三: 有没有相关的列子可供

调试-Delphi6中, DBGrid控件的OnDrawColumnCell方法到底什么时候会触发

问题描述 Delphi6中, DBGrid控件的OnDrawColumnCell方法到底什么时候会触发 触发OnDrawColumnCell后,我进行单步调试,貌似程序就在里面进行死循环了,不停执行,为什么. 另 procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState); begin if

jQuery EasyUI中的日期控件DateBox修改方法_jquery

jQuery EasyUI中的日期控件DateBox很好用的,首先需要引入jquery文件,代码如下: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Basic DateBox - jQuery EasyUI Demo</title> <link rel="stylesheet" type="text/cs

浅谈MFC 改变控件大小和位置_C 语言

用CWnd类的函数MoveWindow()或SetWindowPos()可以改变控件的大小和位置. void MoveWindow(int x,int y,int nWidth,int nHeight); void MoveWindow(LPCRECT lpRect); 第一种用法需给出控件新的坐标和宽度.高度: 第二种用法给出存放位置的CRect对象: 例: CWnd *pWnd; pWnd = GetDlgItem( IDC_EDIT1 ); //获取控件指针,IDC_EDIT1为控件ID号