文档库 最新最全的文档下载
当前位置:文档库 › 修改应用程序窗口的外观、光标、图标和背景

修改应用程序窗口的外观、光标、图标和背景

修改应用程序窗口的外观、光标、图标和背景
修改应用程序窗口的外观、光标、图标和背景

第九章:定制应用程序窗口的外观,光标,图标和背景

对于窗口的外观图标都是在框架窗口显示故而应在CMainFrame类中修改

光标、背景在视图窗口显示,故而在视图类中修改。

在窗口创建之前修改:在PreCreateWindow();函数中修改。

修改外观:该函数中有一参数CREATESTRUCT&cs包含了窗口的外观设置。

CREATESTRUCT;CREATESTRUCT结构定义了传递给应用程序的窗口过程的初始化参数。

成员:

lpCreateParams指向将被用于创建窗口的数据的指针。

hInstance标识了拥有新窗口的模块的模块实例的句柄。

hMenu标识了要被用于新窗口的菜单。如果是子窗口,则包含整数ID。

hwndParent标识了拥有新窗口的窗口。如果新窗口是一个顶层窗口,这个参数可以为NULL。

cy指定了新窗口的高。

cx指定了新窗口的宽。

y指定了新窗口的左上角的y轴坐标。

x指定了新窗口的左上角的x轴坐标。

style指定了新窗口的风格。

lpszName指向以结束符('\0')表示结尾的字符串,该字符串指定了新窗口的名字。(如果指向空字符串,也就是只包含一个结束符,就相当于传递参数NULL,下同)

lpszClass指向以结束符('\0')表示结尾的字符串,该字符串指定了新窗口的Windows类名(一个WNDCLASS结构;更多的信息参见Win32SDK文档)

dwExStyle指定了新窗口的扩展风格。

例如:cs.cx=600;//窗口宽高

cs.cy=400;

cs.x=300;

cs.y=100;

cs.style&=~FWS_ADDTOTITLE;//默认窗口类型是WS_OVERLAPPEDWINDOW和

FWS_ADDTOTITLE的组合

FWS_ADDTOTITLE将文档标题添加为窗口标题这里

要去掉才能显示修改后的窗口标题

cs.lpszName="神马";//窗口标题

修改窗口图标(左上角图标)

cs.lpszClass

=AfxRegisterWndClass(CS_HREDRAW|CS_VREDRAW,0,0,LoadIcon(NULL,IDI_APPLICATI ON));//设置窗口图标

该函数返回一个lpszClass类型的指针字符串,这里修改后的lpszClass参数必须赋给变量cs.lpszClass,接下来的注册窗口,创建窗口由mfc底层函数实现。

修改窗口背景光标:(在视图类中修改)

cs.lpszClass

=AfxRegisterWndClass(CS_HREDRAW|CS_VREDRAW,LoadCursor(NULL,MAKEINTRESO URCE(32649)),(HBRUSH)GetStockObject(GRAY_BRUSH),0);//视类光标图标背景其中图标在框架类的precreatewindow函数中设置

在窗口创建之后修改:在OnCreate()函数中修改,另外,视类没有该函数,需创建一个响应WM_CREATE消息的OnCreate()函数。

修改窗口外观图标:在CMainFrame类中修改:

SetWindowLong(m_hWnd,GWL_STYLE,GetWindowLong(m_hWnd,GWL_STYLE)&~WS_M AXIMIZEBOX);//窗口外观

SetClassLong(m_hWnd,GCL_HICON,(LONG)LoadIcon(NULL,IDI_ERROR));//窗口图标与外观的函数不一样哦

修改窗口背景光标(在视类中修改)

SetClassLong(m_hWnd,GCL_HCURSOR,(LONG)LoadCursor(NULL,IDC_HELP));//光标SetClassLong(m_hWnd,GCL_HBRBACKGROUND,(LONG)GetStockObject(BLACK_BR USH));//背景

注::

HICON LoadIcon(HINSTANCE hInstance,LPCTSTR lpIconName);图标

HCURSOR LoadCursor(HINSTANCE hlnstance,LPCTSTR lpCursorName);光标HBITMAP LoadBitmap(HINSTANCE hInstance,LPCTSTR lpBitmapName);位图

函数有两个参数

第一个参数当前事例句柄,如果载入资源是预定义资源,则该参数为NULL,如果载入资源是自定义资源,则该参数需为当前事例句柄:获得方法有三种:

1、应用程序类CstyleApp派生于CWinApp类,该类有一个数据成员m_hInstance,

标识了应用程序当前的实例,而在CStyleApp的源文件中已经定义了一个CStyleApp类的对象,且该对象为全局变量,故而只需声明并调用即可。

extern CStyleApp theApp;//声明theApp是外部变量,theApp已经为全局变

量了,此处只需声明即可

m_hIcons[0]=LoadIcon(theApp.m_hInstance,MAKEINTRESOURCE(IDI_ICON1));

2、AfxGetInstanceHandle()可以获取应用程序当前的实例句柄,它是一个全局函数,

所以应用程序的任何地方都可以调用它

m_hIcons[1]=LoadIcon(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDR_M

AINFRAME));

3、MFC提供了一个全局函数:AfxGetApp(),可以获得当前应用程序对象即

theApp的指针

m_hIcons[2]=LoadIcon(AfxGetApp()->m_hInstance,MAKEINTRESOURCE(ID

R_STYLETYPE));

第二个参数需要的是图像的名称,或者是图像资源标识符字符串,而我们自定义的只有资源的ID,这里必须通过MAKEINTRESOURCE宏将资源ID转换成相应的资源字符

LPTSTR MAKEINTRESOURCE(

WORD wInteger

);

如果是载入资源是预定义资源,则不需要用MAKEINTRESOURCE宏转换,可直接使用。

Flash舞台随窗口大小动态调整

本文介绍如何建立一个舞台随窗体尺寸大小动态改变的Flash例子,使用的脚本为AS3.0 1.建立工程 2.新建一个AS文件,主要实现舞台的动态缩放功能 代码如下:

package { import flash.display.Sprite; import flash.display.Stage; import flash.events.Event; import flash.external.ExternalInterface; public class BrowserCanvas { public static const HACK_MARGIN_BOTTOM:String = "marginBottom"; //Adds a negative bottom margin to object tags to compensate for browser weirdness public static const HACK_IE_REPARENT:String = "IEReparent"; //In IE, create a container div which encapsulates the object tag in order to hav min/max sizes work public static const HACK_UNIQUE_ID:String = "uniqueId"; //If you put both an embed and object tag with the same id, this tries to compensate private var stage:Stage; private var containerId:String; private var _width:String; private var _minWidth:String; private var _maxWidth:String; private var _height:String; private var _minHeight:String; private var _maxHeight:String; private var timerSprite:Sprite; public function BrowserCanvas ( stage:Stage,containerId:String=null , browserHacks:Array=null ) { trace("BrowserCanvas - Copyright (c) 2008 Noel Billig (https://www.wendangku.net/doc/8c6243612.html,)"); this.stage = stage; timerSprite = new Sprite(); _width = String( stage.stageWidth ); _height = String( stage.stageHeight ); if (browserHacks == null) browserHacks = [HACK_MARGIN_BOTTOM,HACK_IE_REPARENT,HACK_UNIQUE_ID]; this.containerId = containerId;

如何实现控件随对话框大小变化而自动调整大小和位置

如何实现控件随对话框大小变化而自动调整大小和位置 VC++ 2009-12-28 20:27:42 阅读461 评论0字号:大中小订阅 1. 处理对话框的WM_SIZE,然后用MoveWindow或者SetWindowPos来把对话框上面的控件重新调整新位置和大小。 2. 基本的做法就是响应WM_SIZE消息,并按照窗口大小比例来调整控件的位置和大小,控件的大小最好设置成窗口的百分之几,这样的话,就可以根据窗口的大小随时调整了。 3. 每次OnSize 即可获得一个CRect,然后根据这个CRect来确定这些控件的位置和大小,使用函数MoveWindow 或SetWindowpos实现。 4. 1)通过下面两个函数获取的是显示屏幕的大小【屏幕的分辨率】(不包括任务栏等区域): int nFullWidth=GetSystemMetrics( SM_CXFULLSCREEN ); //屏幕宽度 int nFullHeight=GetSystemMetrics( SM_CYFULLSCREEN ); //屏幕高度 2)这两个函数获取的是真正屏幕的大小【屏幕的分辨率】(包括任务栏等区域): int cx = GetSystemMetrics( SM_CXSCREEN ); int cy = GetSystemMetrics( SM_CYSCREEN ); 如:用前两个函数获取的大小可能是1024*687 ,而用下边两个获取的就是1024*768。 5. 在OnSize() 中调用:GetClientRect() 和GetWindowRect() 函数可获取窗口大小,但需注意得到的是设备坐标,如果需要画图什么的还需要转换成逻辑坐标。 6. 字体大小随窗口变化而自动变化,比如说始终使字的高度始终占窗口的1/3。使用: 1). 在Creat中将nHeight设成窗口长度或者宽度的一定比值就行了(最好在onsize函数中设置); 2). 使用WM_FONTCHANGE 消息。 ***************************************************************************************************** ************************************** 转载自: https://www.wendangku.net/doc/8c6243612.html,/u/20090314/16/835a3bbb-2d13-4842-922a-8a07cde1a055.html (作者:Fireway2008) 总结步骤: 1.创建一个CWnd* 的数组,在初始化时取的各个控件的句柄,存在这个数组里面 2.处理WM_SIZE事件,可以得到新变化后的窗口和最初窗口的变化比例kx,ky 3.对数组中的每一个控件,计算新位置 4.MoveWindow移动到新位置

使用菜单、工具栏来改变窗口的大小与颜色-15页word资料

使用菜单、工具栏来改变窗口的大小与颜色 10、WinForms高级编程 目标 创建一个更改窗口的大小与颜色的应用程序。创建一个单文档的文本编辑器应用程序。指导教师讲解阶段目标 第一部分指导(60分钟) 练习1:使用菜单、工具栏来改变窗口的大小与颜色 问题 主菜单、快捷菜单、工具栏和状态栏的应用实例 指导教师讲解问题说明 用户在窗体上单击右键,弹出图示的快捷菜单。执行其中的颜色命令可产生与主菜单中相应命令等效的结果。某命令执行时菜单项左侧带有"?"标记。再次执行该菜单命令取消相应的颜色及菜单项左侧的"?"标记,将颜色恢复为背景色。执行快捷菜单中的"红"命令,然后再次打开快捷菜单后,如图1.2所示。 图1.1默认窗体背景色 图1.2红色背景色 分析 指导教师分析解题思路 添加工具栏和状态栏后,窗体的界面设计如图1.3所示。主要用到了这些控件:MenuStrip,Context MenuStrip,ToolStrip,StatusStrip。 图1.3窗体设计界面 推荐步骤: (1)创建Windows应用项目。 (2)按照设计界面添加相应的控件,并在主菜单和快捷菜单中添加相应的菜单项;并添加相应的点击处理事件函数。 (3)完整的代码如下: using System;

using System.Collections.Generic; using SystemponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; namespace menuToolStatus{ public partial class Form1:Form public Form1() InitializeComponent(); private void MenuItem_default_Click(object sender,EventArgs e) this.BackColor=Control.DefaultBackColor; MenuItem_default.CheckState=CheckState.Indeterminate; cMenuItem_default.CheckState=CheckState.Indeterminate; MenuItem_blue.Checked=MenuItem_green.Checked=MenuItem_red. Checked=false; cMenuItem_blue.Checked=cMenuItem_green.Checked=cMenuItem_r ed.Checked=false; StatusLabel3.Text="默认颜色"; private void cMenuItem_default_Click(object sender,EventArgs e) MenuItem_default_Click(sender,e); private void MenuItem_red_Click(object sender,EventArgs e) MenuItem_red.Checked=!MenuItem_red.Checked; if(MenuItem_red.Checked) this.BackColor=Color.Red; MenuItem_red.CheckState=CheckState.Indeterminate;

VB中控件位置大小自动适应窗体变化的三种模式详解

VB中控件位置大小自动适应窗体变化的三种模式详解.doc 代码是无需更改的。 第一种。就是最实用的,就是所有控件的width和height按比例随窗体变化,位置也是当然是按比例哦。控件的字体不变。如下复制到代码: '改比例,字体不该。最实用 Option Explicit Private FormOldWidth As Long '保存窗体的原始宽度 Private FormOldHeight As Long '保存窗体的原始高度 Private Sub Form_Load() Call ResizeInit(Me) '在程序装入时必须加入 End Sub Private Sub Form_Resize() Call ResizeForm(Me) '确保窗体改变时控件随之改变 End Sub '在调用ResizeForm前先调用本函数 Public Sub ResizeInit(FormName As Form) Dim Obj As Control FormOldWidth = FormName.ScaleWidth FormOldHeight = FormName.ScaleHeight On Error Resume Next For Each Obj In FormName Obj.Tag = Obj.Left & " " & Obj.Top & " " & Obj.Width & " " & Obj.Height & " " Next Obj On Error GoTo 0 End Sub '按比例改变表单内各元件的大小,在调用ReSizeForm前先调用ReSizeInit函数 Public Sub ResizeForm(FormName As Form) Dim Pos(4) As Double Dim i As Long, TempPos As Long, StartPos As Long Dim Obj As Control Dim ScaleX As Double, ScaleY As Double ScaleX = FormName.ScaleWidth / FormOldWidth '保存窗体宽度缩放比例 ScaleY = FormName.ScaleHeight / FormOldHeight '保存窗体高度缩放比例 On Error Resume Next For Each Obj In FormName StartPos = 1 For i = 0 To 4 '读取控件的原始位置与大小 TempPos = InStr(StartPos, Obj.Tag, " ", vbTextCompare) If TempPos > 0 Then

C#自定义控件实现控件随窗口大小改变

1.新建用户控件,取名MyForm。 2.将默认的UserControl改成Form 3.在类中添加以下代码 private float X, Y; //获得控件的长度、宽度、位置、字体大小的数据 private void setTag(Control cons)//Control类,定义控件的基类 { foreach (Control con in cons.Controls) { con.Tag = con.Width + ":"+ con.Height + ":"+ con.Left + ":"+ con.Top + ":" + con.Font.Size;//获取或设置包含有关控件的数据的对象

if (con.Controls.Count > 0) setTag(con);//递归算法 } } private void setControls(float newx, float newy, Control cons)//实现控件以及字体的缩放 { foreach (Control con in cons.Controls) { string[] mytag = con.Tag.ToString().Split(new char[] { ':' }); float a = Convert.ToSingle(mytag[0]) * newx; con.Width = (int)a; a = Convert.ToSingle(mytag[1]) * newy; con.Height = (int)(a); a = Convert.ToSingle(mytag[2]) * newx; con.Left = (int)(a); a = Convert.ToSingle(mytag[3]) * newy; con.Top = (int)(a); Single currentSize = Convert.ToSingle(mytag[4]) * newy; con.Font = new Font(https://www.wendangku.net/doc/8c6243612.html,, currentSize, con.Font.Style, con.Font.Unit); if (con.Controls.Count > 0) { setControls(newx, newy, con);//递归 } } } private void MyForm_Resize(object sender, EventArgs e) { float newx = (this.Width) / X;//当前宽度与变化前宽度之比 float newy = this.Height / Y;//当前高度与变化前宽度之比 setControls(newx, newy, this); this.Text = this.Width.ToString() + ""+ this.Height.ToString(); //窗体标题显示长度和宽度

电脑应用窗口的大小调节方法

电脑应用窗口的大小调节方法 很多用户问我Win7系统打开的窗口太小了,比如:右击桌面、QQ登陆面板等;除了修改电脑分辨率外?大家知道电脑应用窗口的大小调节吗?下面我们就给大家详细介绍一下吧! ?1、每个应用的窗口大小和位置信息存储在: “HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Applic ationFrame\Positions\[应用的PackageFamilyName]![应用的ID]”下的PositionObject中。其中E序存储,格式如下: ?0x0000:永远为0x0000002C。 ?0x0004:激活了窗口最大化时为0x00000002,其余时候是0x00000000。?0x0008:窗口关闭时的状态。使用窗口大小时为0x00000001,最小化时为0x00000002,最大化时为0x00000003。 ?如果当前状态为最小化0x00000002,下次打开窗口时:如果0x0004为 0x00000002,就会以最大化状态打开窗口;如果0x0004为0x00000000,就会使用窗口大小还原窗口。 ?0x000C:最小化时为0xFFFF8300,其余时候是0xFFFFFFFF。 ?0x0010:永远为0xFFFFFFFF。 ?0x0014:永远为0xFFFFFFFF。 ?0x0018:永远为0xFFFFFFFF。 ?0x001C:窗口左上角像素的X-7,图中为0x000000C8(十进制200)。(可以得到结论,随机生成的位置即使最靠左上角也会在左侧空出7像素) ?0x0020:窗口左上角像素的Y,图中为0x00000040(十进制64)。 ?0x0024:窗口右下角像素的X-8,图中为0x000003F8(十进制1016)。

2018-修改游戏窗口化大小-精选word文档 (11页)

本文部分内容来自网络整理,本司不为其真实性负责,如有异议或侵权请及时联系,本司将立即删除! == 本文为word格式,下载后可方便编辑和修改! == 修改游戏窗口化大小 篇一:常用电脑快捷键大全及游戏全屏问题 常用电脑快捷键大全 按”shift”+”6” 是省略号??, 方法:shift+6(主键盘上的6,就是Y键对上去的那个6),前提是在你有五笔输入法的状态栏上,必须是中文标点,就是有个软件盘的旁边那个标点符号必须是空心的.) 另一个方法是:按Ctrft不放,按主键盘区“。”切换中英文标点输入法。 、、、退格键的左边是顿号键。点符号必须是空心的.) 快捷键列表 单独按Windows:显示或隐藏“开始”功能表 Windows+BREAK:显示“系统属性” 对话框 Windows+D:显示桌面 Windows+M:最小化所有窗口 Windows+Shift+M:还原最小化的窗口 Windows+E:开启“资源管理器” Windows+F:查找文件或文件夹 Windows+CTRL+ F:查找电脑 Windows+F1:显示Windows “帮助” Windows+R:开启“运行” 对话框

Windows+U:开启“公用程序管理器” Windows+L:锁定计算机(Windows XP新功能) Windows按住不动+Tab:打开的应用程序切换,立体效果(win7系统支持)★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★ Ctrl快捷键 Ctrl+S 保存 Ctrl+W 关闭程序 Ctrl+N 新建 Ctrl+O 打开 Ctrl+Z 撤销 Ctrl+F 查找 Ctrl+X 剪切 Ctrl+C 复制 Ctrl+V 粘贴 Ctrl+A全选 Ctrl+[ 缩小文字 Ctrl+] 放大文字 Ctrl+B 粗体 Ctrl+I 斜体 Ctrl+U 下划线 Ctrl+Shift输入法切换 Ctrl+空格中英文切换 Ctrl+回车 QQ号中发送信息 Ctrl+Home 光标快速移到文件头

调整 Windows 窗体的大小和比例

调整 Windows 窗体的大小和比例 .NET Framework 4.5 其他版本 此主题尚未评级 - 评价此主题 本主题提供一些链接,这些链接指向有关调整 Windows 窗体大小的信息。 本节内容 如何:调整 Windows 窗体的大小 提供有关指定 Windows 窗体大小的说明。 Windows 窗体中的自动缩放 讨论自动缩放功能如何使窗体及其控件在计算机之间正确地显示。 参考 Size 描述此类并提供指向其所有成员的链接。 TableLayoutPanel 描述此类并提供指向其所有成员的链接。 FlowLayoutPanel 描述此类并提供指向其所有成员的链接。 相关章节 更改 Windows 窗体外观 提供指向一些主题的链接,这些主题描述更改 Windows 窗体外观的其他方法。如何:使用设计器调整Windows 窗体的大小 .NET Framework 4.5 其他版本 此主题尚未评级 - 评价此主题 有多种方式可指定 Windows 窗体的大小。在 Visual Studio 中,可以通过使用“Windows 窗体设计器”或“属性”窗口来更改窗体的大小。有关通过使用代码更改窗体大小的信息,请参见如何:调整 Windows 窗体的大小。

说明 在Windows 窗体设计器中调整窗体的大小 1.在 Windows 窗体设计器中,单击该窗体以选定它。 2.单击并拖动窗体边框上出现的八个尺寸柄中的一个。尺寸柄看起来象小 说明 使用“属性”窗口调整窗体的大小 说明 请参见 任务 演练:创建可根据数据输入需要调整大小的Windows 窗体 演练:创建可根据本地化需要调整比例的布局 如何:使用AutoSize 属性和TableLayoutPanel 控件支持对Windows 窗体的本地化 如何:调整Windows 窗体上控件的大小 参考 Windows 窗体概述 概念 Windows 窗体中的自动缩放 其他资源 调整Windows 窗体的大小和比例 创建新的Windows 窗体

VB 布局随窗口大小改变)

VB 布局随窗口大小改变 凡用过VB编写Windows应用程序的用户都可能有过这样的经历:当一个经过精心设计的应用程序运行后,如果用户重新调整了窗体的大小,则控制在窗体中的相对位置、控件与窗体的大小比例均会严重失调,程序的界面变得面目全非。一个好的Windows应用程序的界面,自适应窗体尺寸改变的能力是必不可少的。笔者在这方面做了一些探讨,希望能对VB编程爱好者提供一些启发和帮助。 1、按照窗体尺寸缩放比例自动调整控件的大小 窗体和控件的大小由窗体和控件的Width属性和Height属性确定。所以当用户界面设计完成之后,窗体及其内部的各控件的Width, Height属性便随之确定下来;从而窗体相对于每一个控件,它们的宽度之比、高度之比均被确定。如果窗体Forml内的一个文本框Text1的宽(即Text1的Width属性值)为3610,高度(即Text1的Height属性值)为1935;而窗体Form1的上述两个值分别为4890和3615,则它们的宽度之比和高度之比分别为:361014890、193513615。当用户在程序启动后调整了窗体的尺寸,窗体的宽度和高度将分别为Form1.ScaleWidth,Form1.ScaleHeight;此时应该按上述比例来调整文本框Textl的的高度和宽度值。即: (调整后的Text1的Width属性值)/( Form1.ScaleWidth)=3610/4890; (调整后的Text1的Height属性值)/(Form1.Scale-Height)=1935/3615; 所以调整后的Text1的Width属性值=(3610/4890)* Form1.ScaleWidth; 调整后的Text1的Height属性值=(1935/3615) * Form1.ScaleHeight; 对于一般控件来说,应该有: 调整后的控件的Width属性值=(控件原Width属性值/窗体原Width属性值)*窗体.ScaleWidth 调整后的控件的Height属性值=(控件原Height属性值/窗体值/窗体原Height属性值)*窗 体.ScaleHeight 按照上述方法确定窗体缩放后控件Width和Height属性值,则当窗体尺寸被调整后,控件的大小将按比例得到相应的调整。 2、按照窗体尺寸缩放比例自动调整控件在窗体中的相对位置 控件在窗体中的位置由该控件的Left和Top属性确定。程序启动后如果窗体被缩放,只要按照缩放的比例来重新调整窗体内各控件的Left和Top属性值即可。 所以根据上面介绍的原理,在窗体被缩放之后,只要按照下面的关系来设置控件的Left和Top属性值即可。

mfc 控件大小随窗体改变而改变

一 一个基于对话框的MFC界面,怎么样才能让对话框里的控件能和对话框同比例变小变大?今天我一直想解决这个问题,这是师姐留给我的任务。经过在网上的大量搜素,终于找到了解决方法,其实比较简单。 一般情况下,我们新建的对话框,里面的“确定”和:取消”按钮,在对话框最大化得时候,不会一起变大的,而是保持原来的大小。 最简单的情况: 当我们点击最大化按钮的时候,对话框会最大化,但是控件“确定”和“取消”不会跟着变大。如果我们在对话框上面有多少控件,那么会很丑,而且很不实用,最大化本来就是想看的更清楚嘛。 我们可以采取下面的措施:对话框也是窗口,最大化是对窗口大小的改变,而在windows message handle中有个WM_SIZE的消息,该消息在窗口大小发生变化的时候会产生。那么我们可以根据这个消息,在窗口大小发生变化的时候,利用MoveWindow()函数来重新设置各个控件的大小。

还是以上面最简单的情况为例子: 1 首先要知道对话框大小是否改变,改变了多少,我们应该记录当前对话框的大小。 在对话框类中添加成员变量CRect m_rect 他是用来记录当前对话框的大小。我们在OnInitDialog()函数中获取对话框创建时的大小:GetClientRect(&m_rect); 2 增加消息WM_SIZE的消息响应函数OnSize():只要对话框大小发生变化,就会调用该函数。 3 在OnSize()函数中增加如下代码:(最简单的为例子,就一个确定按钮和取消按钮) void CTestDlg::OnSize(UINT nType, int cx, int cy) { CDialog::OnSize(nType, cx, cy); // TODO: Add your message handler code here for (int i=1;i<=2;i++) //因为是两个控件,所以这里用了循环 { CWnd *pWnd; pWnd = GetDlgItem(i); //获取ID为i的空间的句柄,因为“确认”ID为1,“取消”ID为2 if(pWnd) //判断是否为空,因为对话框创建时会调用此函数,而当时控件还未创建 { CRect rect; //获取控件变化前的大小 pWnd->GetWindowRect(&rect); ScreenToClient(&rect//将控件大小转换为在对话框中的区域坐标 //cx/m_rect.Width()为对话框在横向的变化比例

宽屏液晶调整Dosbox 窗口大小

宽屏液晶显示器,玩经典DOS游戏时,网上不少人碰到Dosbox 0.74无法调整窗口大小的问题 即使添加了 windowresolution=1024x640 output=opengl 这样的命令行也无法实现窗口大小的改变。 这里给出真正的解决方法。 其实添加 windowresolution= output= 两行本身是没错的,但这要建立在完整的conf文件的基础上。 ------------- 于是解决方法就很简单,就是添加完整的命令行 [sdl] fullscreen=false fulldouble=false fullresolution=original windowresolution=1024x640 output=opengl autolock=true sensitivity=100 waitonerror=true priority=higher,normal mapperfile=mapper-0.74.map usescancodes=true [render] frameskip=0 aspect=false scaler=normal2x -------------------------------- 这样就可以调整窗口模式下的窗口大小了 其中 ------------ 1. windowresolution=1024x640 的1024和640分别就是窗口大小,请自行调节。 ------ 2. scaler=normal2x 这一行是窗口模式的渲染方式,通常使用normal2x

其他的渲染方式有 none, normal2x, normal3x, advmame2x, advmame3x, advinterp2x, advinterp3x, hq2x, hq3x, 2xsai, super2xsai, supereagle, tv2x, tv3x, rgb2x, rgb3x, scan2x, scan3x. 可以根据自己选择,有些渲染方式比如是不响应自定义分辨率的,如果发生自定义窗口大小无效的情况,请选用none, normal2x, normal3x等渲染方式。

vim 改变窗口的大小

vim 改变窗口的大小 最快的方法: 1改变高度:res +n(增加n行的高度)n+ctrl+w++ 2.改变宽度:vertical res +n(增加n列的宽度)n+ctrl+w+> 6. 改变窗口大小*window-resize* *CTRL-W_=* CTRL-W = 使得所有窗口(几乎) 等宽、等高,但当前窗口使用'winheight' 和 'winwidth'。 置位'winfixheight' 的窗口保持它们的高度,而置位'winfixwidth' 的窗口保持它们的宽度。 :res[ize] -N *:res* *:resize* *CTRL-W_-* CTRL-W - 使得当前窗口高度减N (默认值是1)。 如果在'vertical' 之后使用,则使得宽度减N。 :res[ize] +N *CTRL-W_+* CTRL-W + 使得当前窗口高度加N (默认值是1)。 如果在'vertical' 之后使用,则使得宽度加N。 :res[ize] [N] CTRL-W CTRL-_ *CTRL-W_CTRL-_* *CTRL-W__* CTRL-W _ 设置当前窗口的高度为N (默认值为最大可能高度)。 z{nr} 设置当前窗口的高度为{nr}。 *CTRL-W_<* CTRL-W < 使得当前窗口宽度减N (默认值是1)。 *CTRL-W_>* CTRL-W > 使得当前窗口宽度加N (默认值是1)。 :vertical res[ize] [N] *:vertical-resize* *CTRL-W_bar* CTRL-W | 设置当前窗口的宽度为N (默认值为最大可能宽度)。 你也可以用鼠标上下拖动状态行来改变窗口的高度,或者左右拖动垂直分割线来改变窗口 宽度。这些功能只有在支持鼠标的版本里,并且设置了'mouse' 选项才可以用。 选项'winheight' ('wh') 用来设置当前窗口的最小高度。每当其它窗口变为当前窗口的时候,这一选项就会生效。如果设置为0,则禁用。把'winheight' 设一个很大的值,例如,'9999',就使得当前窗口永远占据尽可能大的空间。尽量设置成一个编辑时比较舒服的值,比如说,'10' 就是一个合理的值。 同样,'winwidth' ('wiw') 选项设定了当前窗口的最小宽度。

VB 控件随窗口大小改变

VB 控件随窗口大小改变 一个好的Windows应用程序的界面,自适应窗体尺寸改变的能力是必不可少的。笔者在这方面做了一些探讨,希望能对VB编程爱好者提供一些启发和帮助。 凡用过VB编写Windows应用程序的用户都可能有过这样的经历:当一个经过精心设计的应用程序运行后,如果用户重新调整了窗体的大小,则控制在窗体中的相对位置、控件与窗体的大小比例均会严重失调,程序的界面变得面目全非。 1、按照窗体尺寸缩放比例自动调整控件在窗体中的相对位置 控件在窗体中的位置由该控件的Left和Top属性确定。程序启动后如果窗体被缩放,只要按照缩放的比例来重新调整窗体内各控件的Left和Top属性值即可。 所以根据上面介绍的原理,在窗体被缩放之后,只要按照下面的关系来设置控件的Left和Top属性值即可。 调整后控件的Left属性值=(控件原Left属性值/窗体原Left属性值)*窗体.ScaleWidth; 调整后控件的Top属性值=(控件原Top属性值/窗体原Top属性值)*窗体.ScaleHeight; 2、按照窗体尺寸缩放比例自动调整控件的大小 窗体和控件的大小由窗体和控件的Width属性和Height属性确定。所以当用户界面设计完成之后,窗体及其内部的各控件的Width, Height属性便随之确定下来;从而窗体相对于每一个控件,它们的宽度之比、高度之比均被确定。如果窗体Forml内的一个文本框Text1的宽(即Text1的Width属性值)为3610,高度(即Text1的Height属性值)为1935;而窗体Form1的上述两个值分别为4890和3615,则它们的宽度之比和高度之比分别为:361014890、193513615。当用户在程序启动后调整了窗体的尺寸,窗体的宽度和高度将分别为Form1.ScaleWidth,Form1.ScaleHeight;此时应该按上述比例来调整文本框Textl的的高度和宽度值。即: (调整后的Text1的Width属性值)/( Form1.ScaleWidth)=3610/4890; (调整后的Text1的Height属性值)/(Form1.Scale-Height)=1935/3615; 所以调整后的Text1的Width属性值=(3610/4890)* Form1.ScaleWidth; 调整后的Text1的Height属性值=(1935/3615) * Form1.ScaleHeight; 对于一般控件来说,应该有: 调整后的控件的Width属性值=(控件原Width属性值/窗体原Width属性值)*窗体.ScaleWidth 调整后的控件的Height属性值=(控件原Height属性值/窗体值/窗体原Height属性值)*窗 体.ScaleHeight

VC改变窗口大小和样式

改变窗口的外观和大小 改变窗口的外观和大小需要在窗口创建以前改变。所以我们可以在CMainFrame的PreCreateWindow中改变CREATESTRUCT 结构体的值就行了。 E.G. BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs) 改变窗口的大小-> cs.cx = 300; cs.cy = 200; 改变窗口的显示位置坐标是 cs.x 和 cs.y 这里常用的一个函数是::GetSysMetrics(SM_CXSCREEN); ::GetSysMetrics(SM_CYSCREEN); 用来取得屏幕的大小。 要改变窗口标题栏的字符串: cs.lpszName = "Seven"; 会发现标题栏不会改变窗口的标题栏的上的字符串。 改变单文档应用程序的标题栏的字符串参考MSDN window styles/Frame-window styles 下面有一个Changing the styles of a window create by MFC./ The SDI Case 默认的情况是WS_OVERLAPPEDWINDOW and FWS_ADDTOTITLE styles FWS_ADDTOTITLE is add the document title to the window’s caption. 去掉FWS_ADDTOTITLE 就可以更改窗口标题栏字符串。 cs.style &= ~FWS_ADDTOTITLE; cs.lpszName = "Seven"; 如果我们需要改变背景,画刷,光标等等时候。 我们可以在:PreCreateWindow中创建窗口类,WNDCLASS wndClass; 把这个类里的值改变成自己想要的内容就可以了。 E.G. wndClass.cbClsExtra = 0; wndClass.cbWndExtra = 0; wndClass.hbrBackground = (HBRUSH)GetStockObject(DKGRAY_BRUSH); wndClass.hCursor = LoadCursor(NULL, IDC_WAIT); wndClass.hIcon = LoadIcon(NULL, IDI_WARNING); wndClass.hInstance = AfxGetInstanceHandle(); 获取应用程序的实例句柄可用AfxGetInstanceHandle函数,这个函数是一个全局的函数,前面有一个AFX表示是一个应用程序框架类函数,哪里都可用。 wndClass.lpfnWndProc = ::DefWindowProc; 我们只是想要改变窗口的图标,光标,不想改变条用过程所以用defWindowProc函数来处理。 因为在CWnd中也有一个defWindowProc函数,比全局的函数少一个参数如果不加::

winform窗体大小

窗体的弹出位置可以由属性StartPosition来指定,默认值有: Manural 自定义,由属性Location指定; CenterScreen 屏幕中央; WindowsDefaultBounds 系统默认位置(但大小为系统默认窗体大小)WindowsDefaultLocation 系统默认位置(大小由属性Size指定) CenterParent 父窗体中央 若自定义窗体显示位置,则属性StartPosition选择Manural,然后指定属性Location的坐标值。 实现窗体在屏幕右下角显示:

运行结果: 窗体FormBorderStyle属性设置为:FixedSingle,再把最大化禁用就可以了使用.Net编写Windows程序,对于窗体控制常见项目 属性: 1、让窗体在启动时在指定位置出现 form1.StartPosition Manual CenterScreen WindowsDefaultLocation (default) WindowsDefaultBounds CenterParent // 父窗体的中间 只有在窗体启动前设置才有效。 2、设置窗体的图标 form1.Icon 3、设置该窗体成为多个子窗体的父窗体 form1.isMidContainer = true / false(default) 在设计时使用,一个项目中只能有一个父窗体。

4、指定最大化、最小化按钮的行为 form1.ControlBox = true(default) / false /// 设置是否出现最大化、最小化和关闭按钮 form1.MaxmizeBox = true(default) / false /// 设置最大化按钮是否有效 form1.MinimizeBox = true(default) / false /// 设置最小化按钮是否有效 如果当ControlBox = true MaxmizeBox = false MinimizeBox = false 而HelpButton = true 时就可以看到有个帮助的按钮出现在关闭按钮旁边。 5、窗体如果想显示普通菜单那么需要添加菜单控件MainMenu form1.Menu 选项用于指定使用那个菜单。 如果想动态加载菜单就先准备好要用的几个MainMenu控件,然后到适当时机在运行时改变form1.Menu 的值。 如果要使用快捷菜单,就像窗体中添加ContextMenu控件。然后指定form1.ContextMenu 为这个控件。 6、设置窗体的透明度 form1.Opacity 它的值是一个百分数,范围是0~100%,当它等于0时整个窗体就不可见隐藏起来了。当他等于100%时,这个窗体就是个普通窗体。 7、设置是否在任务栏中显示窗体 form1.ShowInTaskbar = true(default) / false 默认值是true,当他设置为false时就从任务栏消失了。通常可以配合NotifyIcon来实现将程序隐藏到系统右下角的系统状态栏。 8、设置是否显示窗体右下角调整大小的手柄 form1.SizeGripStyle = Auto(default) / Show /Hide

VB中控件大小随窗体大小变化而变化

VB中控件大小随窗体大小变化而变化 有时窗体变化后,如改变分辨率后控件大小却不能随之改变。手工代码调整实在麻烦,下面的模块实现自动查找窗体上控件并使其改变大小以适应窗体变化。 在Form的Resize事件中调用函数Resize_All就能实现控件自动调整大小,如: Private Sub Form_Resize() Dim H, i As Integer On Error Resume Next Resize_ALL Me 'Me是窗体名,Form1,Form2等等都可以 End Sub 在模块中添加以下代码: Public Type ctrObj Name As String Index As Long Parrent As String Top As Long Left As Long Height As Long Width As Long ScaleHeight As Long ScaleWidth As Long End Type Private FormRecord() As ctrObj Private ControlRecord() As ctrObj Private bRunning As Boolean Private MaxForm As Long Private MaxControl As Long Private Const WM_NCLBUTTONDOWN = &HA1 Private Declare Function SendMessage Lib "USER32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long Private Declare Function ReleaseCapture Lib "USER32" () As Long Function ActualPos(plLeft As Long) As Long

相关文档
相关文档 最新文档