搜档网
当前位置:搜档网 › MFC 调整窗口大小

MFC 调整窗口大小

MFC 调整窗口大小
MFC 调整窗口大小

对话框的大小变化后,假若对话框上的控件大小不变化,看起来会比较难看。下面就介绍怎么让对话框上的控件随着对话框的大小的变化自动调整。

首先明确的是Windows有一个WM_SIZE消息响应函数,这个函数在对话框大小发生变化的时候调用,所以我们可以记录下原来对话框的大小,还有当前对话框的大小(这个不用自己算,系统已给出),然后根据控件做出相应比例的调整。

比如原来对话框大小为a,现在为b,原来控件大小为c,那么现在的控件大小应该为c*b/a;(注意a不能为0)。

看实例:(黑体字为添加的代码!!)

假设对话框类为CMyDlg类,那么首先设置一个变量

CRect m_rect; //用于保存原对话框大小

那么在对话框创建的时候先获得对话框的大小

BOOL CMyDlg::OnInitDialog()

{

.........................

SetIcon(m_hIcon, TRUE); // Set big icon

SetIcon(m_hIcon, FALSE); // Set small icon

// TODO: Add extra initialization here

GetClientRect(&m_rect); //获取对话框的大小

return TRUE; // return TRUE unless you set the focus to a control

}

然后再手动添加一个函数,用以实现具体的变化

void CMyDlg::ChangeSize(UINT nID, int x, int y) //nID为控件ID,x,y分别为对话框的当前长和宽

{

CWnd *pWnd;

pWnd=GetDlgItem(nID);

if(pWnd!=NULL) //判断是否为空,因为在窗口创建的时候也会调用OnSize函数,但是此时各个控件还没有创建,Pwnd为空

{

CRect rec;

pWnd->GetWindowRect(&rec); //获取控件变化前的大小

ScreenToClient(&rec); //将控件大小装换位在对话框中的区域坐标

rec.left=rec.left*x/m_rect.Width(); //按照比例调整空间的新位置

rec.top=rec.top*y/m_rect.Height();

rec.bottom=rec.bottom*y/m_rect.Height();

rec.right=rec.right*x/m_rect.Width();

pWnd->MoveWindow(rec); //伸缩控件

}

}

最后添加windows消息响应函数OnSize:

void CMyDlg::OnSize(UINT nType, int cx, int cy) //cx,cy就是当前对话框的长和宽

{

CDialog::OnSize(nType, cx, cy);

// TODO: Add your message handler code here

if(nType!=SIZE_MINIMIZED ) //判断窗口是不是最小化了,因为窗口最小化之后,窗口的长和宽会变成0,当前一次变化的时就会出现除以0的错误操作

{

ChangeSize(IDC_LIST1,cx,cy); //对每一个控件依次做调整

ChangeSize(IDC_LIST2,cx,cy);

ChangeSize(IDC_BUTTON1,cx,cy);

ChangeSize(IDC_BUTTON2,cx,cy);

GetClientRect(&m_rect); //最后要更新对话框的大小,当做下一次变化的旧坐标;

}

}

任务完成!

1.单文档窗体大小的设置。

在CxxxApp中的InitInstance中加入如下代码:

m_pMainWnd->SetWindowPos(NULL,0,0,950,680,SWP_NOMOVE); //此句为添加代码,用于改变窗体的大小

m_pMainWnd->ShowWindow(SW_SHOW);

m_pMainWnd->UpdateWindow();

// 仅当具有后缀时才调用DragAcceptFiles

// 在SDI 应用程序中,这应在ProcessShellCommand 之后发生

return TRUE;

2.对话框窗体大小的设置。

jiyuan.MoveWindow(0,0,950,680); //在此jiyuan为对话框窗体类的对象。

2.1举例如下:

2.1.1在xxxView.h头文件当中定义窗体的对象jiyuan,代码如下:

class CxxxView : public CView

{

protected: // 仅从序列化创建

CgzsjView();

DECLARE_DYNCREATE(CgzsjView)

// 特性

public:

CgzsjDoc* GetDocument() const;

CJiyuan jiyuan; //定义对话框类的对象,在此CJiyuan为窗体的类。

2.1.2 在xxxView.cpp文件当中需要控制窗体的地方添加控制窗体位置和大小的代码,如:

void CgzsjView::On32771() //公差平均值计算响应函数

{

// TODO: 在此添加命令处理程序代码

if(::IsWindow(jiyuan.m_hWnd)) //如果对话框已经打开

{

jiyuan.ShowWindow(SW_SHOW); //显示对话框

jiyuan.MoveWindow (0,0,950,680); //调整对话框的位置和大小

gongcha.DestroyWindow(); //销毁其他的对话框,在此,gongcha为其他对话框类的对象

}

else//(!::IsWindow(jiyuan.m_hWnd)) //如果对话框还未打开

{

jiyuan.Create(IDD_DIALOG1,this); //创建对话框

jiyuan.MoveWindow (0,0,950,680); //调整对话框的位置和大小

jiyuan.ShowWindow(SW_SHOW); //显示对话框

gongcha.DestroyWindow(); //销毁其他的对话框,在此,gongcha为其他对话框类的对象

}

}

VC 中自己创建对话框方法

VC中自己创建对话框的方法 这里讲在VC中不需要打开MFC工程,通过代码直接创建一个对话框,我看这个对话框比MFC的漂亮多了,而且要写会代码不需要研究MFC就直接开发新的工程. 先打开VC++ 6.0 版本, 第一步:创建一个工程名为:Main Dialog 的Win32 Application。创建过程如下: 打开File菜单中New,选自Win32 Application,工程名为:Main Dialog,点击OK,再选自A simple Win32 application。点击Finish,再点击OK.(见图1) 第二步:创建资源脚本。再打开File菜单中New,选自File选项的Resource Script(就是资源脚本),文件名为Dialog,点击OK。

(见图2) 第三步:插入对话框。刚才建立的脚本Dialog显示为Dialog.rc,就在Dialog.rc上面点击鼠标右键Insert(插入)Resource中选自插入Dialog(对话框),点击New(新建),这样对话框插入完毕。(见图3)

第四步:添加resource.h。我们把第四步插入的对话框ID改为IDD_MAIN ,在FileView中有个Header Files的文件,上面点击右键,选择Add Files to Folder...(添加文件到目录),弹出一个工程目录窗口,中间找到resource.h,然后OK了(添加)。(见图4)

第五步:复制代码。双击Main Dialog.cpp,我们写代码的位置出现了(见图5),那里有几行代码,把它们全部删掉,下面已经准备好的代码全部复制到那里,编译,执行,您的是否成功了? #include "stdafx.h" #include "resource.h" #include BOOL WINAPI Main_Proc(HWND hWnd,UINT uMsg,WPARAM wParam,LPARAM lParam); BOOL Main_OnInitDialog(HWND hwnd,HWND hwndFocus,LPARAM lParam); void Main_OnCommand(HWND hwnd,int id,HWND hwndCtl,

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.sodocs.net/doc/808842991.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.sodocs.net/doc/808842991.html,/u/20090314/16/835a3bbb-2d13-4842-922a-8a07cde1a055.html (作者:Fireway2008) 总结步骤: 1.创建一个CWnd* 的数组,在初始化时取的各个控件的句柄,存在这个数组里面 2.处理WM_SIZE事件,可以得到新变化后的窗口和最初窗口的变化比例kx,ky 3.对数组中的每一个控件,计算新位置 4.MoveWindow移动到新位置

MFC对话框程序中的各组件常用方法

MFC对话框程序中的各组件常用方法: Static Text: 将ID号改成唯一的一个,如:IDC_XX,然后进一次类向导点确定产生这个ID,之后更改Caption属性: GetDlgItem(IDC_XX)->SetWindowText(L"dsgdhfgdffd"); 设置字体: CFont *pFont = new CFont; pFont->CreatePointFont(120,_T("华文行楷")); GetDlgItem(IDC_XX)->SetFont(pFont); Edit Control: 设置文本: SetDlgItemText(IDC_XX,L"iuewurebfdjf"); 获取所有输入: 建立类向导创建一个成员变量(假设是shuru1,shuru2……)类型选value,变量类型任选。 UpdateData(true); GetDlgItem(IDC_XX)->SetWindowText(shuru1); 第一句更新所有建立了变量的对话框组件,获取输入的值。第二句将前面的IDC_XX的静态文本内容改为shuru1输入的内容。 若类型选用control: 1.设置只读属性: shuru1.SetReadOnly(true); 2.判断edit中光标状态并得到选中内容(richedit同样适用) int nStart, nEnd; CString strTemp; shuru1.GetSel(nStart, nEnd); if(nStart == nEnd) { strTemp.Format(_T(" 光标在%d" ), nStart); AfxMessageBox(strTemp); } else { //得到edit选中的内容 shuru1.GetWindowText(strTemp); strTemp = strTemp.Mid(nStart,nEnd-nStart); AfxMessageBox(strTemp); } 其中nStart和nEnd分别表示光标的起始和终止位置,从0开始。strTemp.Format 方法用于格式化字符串。AfxMessageBox(strTemp)显示一个提示对话框,其内容是字符串strTemp。 strTemp = strTemp.Mid(nStart,nEnd-nStart)返回一个被截取的字符串,从nStart开始,长度为nEnd-nStart。如果nStart == nEnd说明没有选择文本。 注:SetSel(0,-1)表示全选;SetSel(-1,i)表示删除所选。

使用菜单、工具栏来改变窗口的大小与颜色-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

Visual C++基于对话框的MFC应用程序---简单的时钟实例实验一

1.1 创建对话框的应用程序 1.使用AppWizard创建应用程序框架 首先,创建一个对话框应用程序,其工程文件名为:ch1.dsp。具体步骤如下: (1)启动Visual C++ 6.0,在File菜单中选择new菜单项;(2)在new对话框的Project页中选择 MFC AppWizard(exe)选项,在Project name框中输入:ch1,并在Location 框中指定希望的目录路径,编译系统生成的各种文件将会存放在该目录下,然后点击[OK]按钮 (3)MFC AppWizard-Step1 中选择Dialog based 选项,MFC AppWizard-Step2 到MFC AppWizard-Step4中取默认选项;(4)进入VC对话框设计界面后,选中 [TODO:在这里设置对话控制。]静态框并按del键删除该框,选中[取消]按钮并按del键删除该按钮; (5)将[确认]按钮拖曳到对话框的下方中间。生成的对话框设计窗口(如图1-1所示)。 图1-1

2.向类中添加系统消息响应函数 Windows应用程序的采用事件触发、消息驱动机制和大量的消息响应函数构成了应用程序的主体。本示例需要用到两个消息响应函数OnCtlColor()和OnTimer(),前者响应窗口消息:WM_CTLCOLOR,后者响应窗口消息:WM_TIMER。关于这两个函数的功能和用法暂且略过,留待后面小节再叙。这里先介绍响应函数加载的方法。 在CCh1Dlg类中添加OnCtlColor( )函数的操作方法如下:(1)打开类向导(MFC ClassWizard)窗口,选择Message Maps 页; (2)选择工程、类和对象标识。在Message Maps页的Project、Class name、Object Ids框中 分别选择:ch1、CCh1Dlg、CCh1Dlg; (3)添加响应函数。在Message Maps页的Messages框中选中并双击窗口消息:WM_CTLCOLOR,此时,消息WM_CTLCOLOR 的响应函数OnCtlColor( )被添加到类向导底部Member Functions框中。 注意,添加OnTimer( )函数的过程与上述过程相似,只是第(3)步选择WM_TIMER消息,而不是WM_CTLCOLOR。 添加完毕后,按[OK]按钮退出类向导。回到项目工作区,在项目工作区窗口展开CCh1Dlg类,可以看到类中添加了OnCtlColor( )和OnTimer( )两个消息响应函数。

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.sodocs.net/doc/808842991.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(); //窗体标题显示长度和宽度

MFC对话框向主窗体传递消息机制

对话框向主窗体传递消息,在视图中显示 现举例说明对话框向主窗体传递消息,以及主窗体响应消息的过程。我们拿单文档来说明,我们要实现下列功能:通过对话框,在文本框中输入字符串,在视图中显示刚才输入的字符串。 1、在应用程序向导中选择单个文档,然后完成。我这里的项目名称为mybook 2、在资源视图中,插入一对话框,对话框名称为dlg_wzm。 3、在刚才生成的对话框中插入一文本框,设置好相应的类和变量。为确认按钮生成响应函数。同时在mybook.cpp的BOOL CMyBookApp::InitInstance()函数中让该对话框启动,也就是加入CDlg_wzm dlg; dlg.DoModal();两行程序,当然在前面的要加入#include "dlg_wzm.h"。(详细过程略) 4、下面重点在于点击该对话框的确认按钮向主窗体发送消息。要现定义一个消息名称。

在stdafx.h文件中加入一行: #define WM_MYMESSAGE WM_USER+100 5、在CMainFrame的pulic申明中加入一变量CString wzmstr。目的是为了保存对话框中的字符串的值。在对话框的Onok()函数中: void CDlg_wzm::OnOK() { // TODO: Add extra validation here this->UpdateData(true); CMainFrame* pWnd=(CMainFrame*)AfxGetMainWnd(); //得到父窗体的指针 pWnd->wzmstr=this->m_input_edit; ASSERT(pWnd!=NULL); ::SendMessage(pWnd->GetSafeHwnd(), WM_MYMESSAGE,0,0); //发送消息 //注意WM_MYMESSAGE就是我们前面定义的消息。 //CDialog::OnOK(); } 6、下面我们看看主窗体怎么接受消息。我们要在主窗体中设置消息映射。 在mainfrm.h的protected声明中: afx_msg void OnMyMessage(WPARAM wParam, LPARAM lParam); 在mainfrm.cpp文件中, BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd) //{{AFX_MSG_MAP(CMainFrame) // NOTE - the ClassWizard will add and remove mapping macros here. // DO NOT EDIT what you see in these blocks of generated code ! ON_WM_CREATE() ON_MESSAGE(WM_MYMESSAGE,OnMyMessage) //这里是我们加入的。 //}}AFX_MSG_MAP END_MESSAGE_MAP() 然后在mainfrm.cpp的文件最下面加入一个函数: void CMainFrame::OnMyMessage(WPARAM wParam, LPARAM lParam) { CView *pView=this->GetActiveView(); //得到视图指针 if(pView)

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

电脑应用窗口的大小调节方法 很多用户问我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 光标快速移到文件头

在VC对话框中实现打印和打印预览

在VC对话框中实现打印和打印预览(附实现步骤) 时间:2008-01-27作者:佚名 在一般的软件开发中打印和打印预览是经常要用到的功能,对于VC6.0中的文档/视图(Doc/View)框架,可以很方便的使用缺省的打印和打印预览。但是,如果应用程序是基于对话框的就没有办法利用这种便利。而很多情况下,基于对话框的程序也需要打印和打印预览功能。那该怎么办呢?这正是本文将要解决的问题。 1实现打印 在对话框应用程序中不具备MFC的视和框架交互,要想实现打印和打印预览必须直接获取打印机的设备环境句柄,这时可以设置CPringDialog类中的构造函数的参数,获取打印机的设备环境句柄。利用这个句柄,转换为指针,则按打印流程实现打印任务。 (1)从CFrameWnd类派生出主窗口类CMyFrameWnd加入项目,这个类将作为控制类来实现程序的打印和打印预。 (2)在CMyFrameWnd中加入打印和打印预览相关的函数,为了方便起见,名字和CView视图类中缺省的打印和打印预览虚函数名相同。但这些函数是以成员函数的形式加入的,而不是重载。这里主要介绍Print和OnPrint函数。 Print函数是打印控制函数,由它来弹出打印对话框,取得用户设置信息,如打印机、纸张大小等。还有建立一个打印机DC和设置DOCINFO 结构,该结构包含输入输出文件名及其它一些信息,StartDoc函数要该结构作参数。还要设置打印区域,调用打印函数等 void CMyFrameWnd::Print() { CDC dc; CPrintDialog printDlg(FALSE); if (printDlg.DoModal() != IDOK) //弹出打印对话框,取得用户设置参数 return; dc.Attach(printDlg.GetPrinterDC());

调整 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 窗体

基于MFC对话框的报表打印和预览功能(推荐文档)

基于MFC对话框的报表打印和预览功能 第一步:在工程中加入实现打印功能的四个文件PrintFrame.h, PringtView.h,PrintFrame.cpp, PrintView.cpp CPrintFrame和CPrintView类是两个个可重用的类,开发者只需要把这两个类对应的四个文件拷贝到工程文件所在目录中(PrintFrame.h, PringtView.h,PrintFrame.cpp, PrintView.cpp),并将这四个文件加入工程,并在需要执行打印功能的代码处加入 #include "PrintFrame.h" #include "PrintView.h" 第二步:添加三个消息响应函数来执行该功能 ON_MESSAGE(WM_BEGIN_PRINTING,OnBeginPrinting) ON_MESSAGE(WM_END_PRINTING,OnEndPrinting) ON_MESSAGE(WM_MY_PRINT,OnMyPrint) 这三个消息响应函数放在.cpp文件的BEGIN_MESSAGE_MAP(CReportDlg, CDialog)与END_MESSAGE_MAP()之间,如下:BEGIN_MESSAGE_MAP(CReportDlg, CDialog) //{{AFX_MSG_MAP(CReportDlg) ON_WM_SYSCOMMAND() ON_WM_PAINT() ON_WM_QUERYDRAGICON() ON_BN_CLICKED(IDC_BUTTON1, OnButton1) ON_MESSAGE(WM_BEGIN_PRINTING,OnBeginPrinting) ON_MESSAGE(WM_END_PRINTING,OnEndPrinting) ON_MESSAGE(WM_MY_PRINT,OnMyPrint) ON_BN_CLICKED(IDC_BUTTON2, OnButton2) //}}AFX_MSG_MAP END_MESSAGE_MAP() 其中OnMyPrint是跟具体要打印什么内容有关的开发人员要重点完成的代码,可以打印表格,图片,数据,只要GDI绘图可以进行的操作在这里都可以完成。由于打印预览的一部分工作在CView类里完成,因此在用户程序中只需要相应 WM_MY_PRINT消息就可以执行打印预览的功能,而不需要另外编写打印预览代码。 第三步: 建立一个CPrintFrame的对象,设该对象的指针为pFrame,并将对话框的指针传给该对象的m_pCallerDlg,即pFrame->m_pCallerDlg = this;

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()为对话框在横向的变化比例

MFC中在一个对话框中弹出另一个对话框

在一个对话框中点按一个按钮弹出另外一个对话框。 弹出的对话框可以是模态和非模态两种,简单点讲,模态对话框就是在弹出的对话框没有关闭之前,是不能操作父对话框的。非模态可以。 这里介绍建立模态对话框。 在建立的时候可以有两种形式,一种是直接新建,一种是将已有的对话框整合添加进来。 (我是在WinCE平台下。也是类似MFC的) 第一种方式:新建弹窗 操作步骤 首先按步骤建立一个简单的对话框,并添加按钮。 然后点击Dialog 添加资源 选择Dialog 新建

此时会出现新建好的对话框,右击选择属性可以修改名称。 设计新建的对话框 在对话框上右击选择添加类

填写类名称,点击完成 此时在解决方案资源管理器视图中就会有新建的类,源文件及头文件

将这个头文件包含到主对话框的头文件中。 然后就是调用关系的产生, 双击主窗口在中的按钮,添加相应的处理函数 此时调试运行,点“刀”按钮,就会弹出设计好的刀的对话框。 当然,刀对话框中的设计就是走原来熟悉的路了。 另外一个键“剑” 也是同样的步骤。 这样弹出的对话框有个问题,就是感觉弹出的对话框缩放了,字体变小了。在对话框上右击选择属性就可以看见设置字体的选项了,修改字体即可。

下来介绍第二种方式,添加现有的窗口。第一步:同样按部就班的建立好基本工程。编译一下(F7) 第二步:拷贝文件 首先在当前工程目录下新建一个文件夹用来存放原有工程源码

需要拷贝下面选中的这几个文件。拷贝到新建的这个文件夹下。由于现有工程中有resource.h文件,所以需要提前改一下名称,相应的WifiConfig.rc文件中有调用到这个文件,所以也要修改。用记事本打开.rc文件,将#include“Resource.h” 改为#include “Resource_2.h”(如果是准备新建文件夹来组织代码的话就可以不用改。就像下面这样,其实可以不用改)将这几个文件拷贝到新建的文件夹下。 还需要将原有工程res目录下的图标拷贝到现在工程的res目录下 第三步:添加文件到工程 首先是资源文件添加 现有项,找到WiFI2Uart目录下的.rc文件。确定。

相关主题