精华内容
下载资源
问答
  • VC对话框运行后不能改变大小的问题

    千次阅读 2008-02-27 17:34:00
    今天建立了个基于对话框的mfc工程,运行后发现对话框不能改变大小,而且没有最大化最小化按钮。进寻找后发现:通过对话框的属性的maxize和minize可以设置是否具有最大化和最小化按钮,但是仍然不能改变大小。但是...

    今天建立了个基于对话框的mfc工程,运行后发现对话框不能改变大小,而且没有最大化最小化按钮。

    进寻找后发现:通过对话框的属性的maxize和minize可以设置是否具有最大化和最小化按钮,但是仍然不能改变大小。

    但是经过一番搜索,发现在对话框的Oninitdialog 加一句

    ModifyStyle( NULL, WS_THICKFRAME);

    可以设置对话框能够改变大小。

    时候总结发现,要想让对话框具有改变大小的功能需要在两个地方进行设置,一个是在OnInitDialog中加一句ModifyStyle( NULL, WS_THICKFRAME);另外一个就是必须在对话框属性里设置对话框具有最大化按钮,否则对话框运行后将鼠标移动到边界处虽然能够出现改变大小的图标,但是并不能改变大小

    展开全文
  • 控件是从CWnd派生的,但不能使用SetWindowPos()或OnSize()或OnSizing()来改变大小,应在父窗口的WM_SIZE消息中使用MoveWindow()来进行调整。 VC++之根据对话框大小调整控件大小 1、在对话框类中加入成员变量CRect...

    如果对话框或视类的大小调后,控件的大小和位置没有变化,界面看起来会很不爽.   控件是从CWnd派生的,但不能使用SetWindowPos()或OnSize()或OnSizing()来改变其大小,应在父窗口的WM_SIZE消息中使用MoveWindow()来进行调整。   VC++之根据对话框大小调整控件大小   1、在对话框类中加入成员变量CRect m_rect;用于保存对话框大小变化前的大小;   2、在对话框的OnInitDialog()函数中获取对话框创建时的大小:   GetClientRect(&m_rect);   3、在WM_SIZE的响应函数OnSize()中加入以下代码:   CWnd *pWnd;   pWnd = GetDlgItem(IDC_LIST);   //获取控件句柄   if(pWnd)//判断是否为空,因为对话框创建时会调用此函数,而当时控件还未创建   {   CRect rect;  //获取控件变化前大小  pWnd->GetWindowRect(&rect);   ScreenToClient(&rect);//将控件大小转换为在对话框中的区域坐标  // cx/m_rect.Width()为对话框在横向的变化比例  rect.left=rect.left*cx/m_rect.Width();/调整控件大小  rect.right=rect.right*cx/m_rect.Width();   rect.top=rect.top*cy/m_rect.Height();   rect.bottom=rect.bottom*cy/m_rect.Height();   pWnd->MoveWindow(rect);//设置控件大小  }   GetClientRect(&m_rect);//将变化后的对话框大小设为旧大小

    展开全文
  • 创建不能改变大小对话框

    千次阅读 2010-03-15 23:43:00
    在我们开发的过程中,需要实现大量的弹出式对话框。其中有一些对话框由于在响应WM_SIZE消息时没有移动相应控件的位置,导致了在改变...二就是创建不能改变大小对话框。至于选择哪一种方法则要根据具体的要求而定

          在我们开发的过程中,需要实现大量的弹出式对话框。其中有一些对话框由于在响应WM_SIZE消息时没有移动相应控件的位置,导致了在改变对话框的大小后,对话框中的控件并不会随着窗体大小的改变而移动位置。解决这个问题有两个方法:一是在WM_SIZE消息中添加相应的处理代码,使控件随着窗口大小的改变而移动其位置和调整其大小。二就是创建不能改变大小的对话框。至于选择哪一种方法则要根据具体的要求而定,个人认为程序的主对话框需要使用方法一,而程序的一些提供给用户输入的弹出对话框,我认为使用第二种方法更加的方便。下面让我们来看看第二种方法的实现方法。

          对话框的外观是由窗体样式(Windows Styles)决定的,通过定义窗体样式,我们可以指定对话框中是否有标题栏、是否有滚动条以及是否可以改变对话框的大小等。窗体样式是一个32位的字段值,我们可以通过标志组合的方法,来定义自己的窗体样式。比如你组合下列标志: WS_CAPTION | WS_SYSMENU | WS_THICKFRAME | WS_MINIMIZEBOX | WS_MAXMIZEBOX,就可以创建一个带有标题栏、系统目录、最小化按钮以及最大化按钮的可以改变大小的对话框。所以,如果你想创建一个不能改变大小的对话框,只需要将WS_THICKFRAME和WS_MAXMIZEBOX标志去除即可。

          明白了创建不能改变大小对话框的原理后,下面让我们再来看看用什么方法可以创建一个不能改变大小的对话框。方法一是通过使用资源编辑器,讲对话框的Border属性设置为Dialog Frame,然后将Maxmize Box属性设为False,这也是资源编辑器在插入一个对话框时候的默认设置。该方法最为简单,但是该方法无法实现在程序中动态改变对话框的大小。方法二是使用GetWindowLong函数和SetWindowLong函数,我们使用GetWindowLong函数获取对话框所有的窗口样式,然后通过位操作去掉WS_THICKFRAME和WS_MAXMIZEBOX标志位,最后再通过SetWindowLong函数设置新的窗口样式到原来的窗口上即可。应该注意的是我们应该在窗口初始化的时候执行上述操作,即我们应该将代码添加到处理WM_INITDIALOG消息的对话框过程中。如果使用WIN32式的经典编程方法,则代码如下所示。 

    如果使用的是MFC的话,则可以将代码添加到OnInitDialog函数中,代码如下所示。

     

    方法三就是使用MFC中的CWnd类中的ModifyStyle函数,代码如下所示。

     

     

     

     

     

    展开全文
  • MFC如何使用ModifyStyle()来使对话框能拖动边框改变大小又有标题栏,需要去掉什么属性,增加什么属性?我用的是 ... 但是没有系统菜单出来,如果加上WS_SYSMENU的话,又不能拖动改变大小,怎么处理
  • 对话框内的控件随着对话框大小改变而等比例改变的问题,本人也在网上搜索到一些资料,试了一下成功了! 但是却出现了一个BUG!首先把代码给大家看一下吧! 1.在CMyDlg.h中添加一个声明: CRect m_rect; 2.在类...
  • VC的对话框字体设置对所有控件都有效,你不能单独地改变某个静态文本的字体。对于你的问题,需要首先用CreateFont来建立一个字体对象,然后调用控件的SetFont,就可以了。  例子:  1、改静态文体的ID,如:IDC_...

    VC的对话框字体设置对所有控件都有效,你不能单独地改变某个静态文本的字体。对于你的问题,需要首先用CreateFont来建立一个字体对象,然后调用控件的SetFont,就可以了。 
    例子: 
    1、改静态文体的ID,如:IDC_STATIC1 
    2、添加一个Edit控件,建立一个关联的控件m_editControl。 
    3、在OnInitDialog中添加如下代码: 
    CFont * f; 
    f = new CFont; 
    f->CreateFont(16,            // nHeight 
         0,           // nWidth 
         0,           // nEscapement 
         0,           // nOrientation 
         FW_BOLD,     // nWeight 
         TRUE,        // bItalic 
         FALSE,       // bUnderline 
         0,           // cStrikeOut 
         ANSI_CHARSET,              // nCharSet 
         OUT_DEFAULT_PRECIS,        // nOutPrecision 
         CLIP_DEFAULT_PRECIS,       // nClipPrecision 
         DEFAULT_QUALITY,           // nQuality 
         DEFAULT_PITCH | FF_SWISS, // nPitchAndFamily 
         _T("Arial"));              // lpszFac

    m_editControl.SetFont(f); 
    m_editControl.SetWindowText("问专家"); 
    GetDlgItem(IDC_STATIC1)->SetFont(f);

    运行结果如下图所示,下载完整例子 CtrlFont.zip

    需要注意的是,这里我们使用的是CFont指针,而不是普通的CFont局部变量,如果把程序改成下面这样: 
    CFont f; 
    f.CreateFont(16,             // nHeight 
         0,           // nWidth 
         0,           // nEscapement 
         0,           // nOrientation 
         FW_BOLD,     // nWeight 
         TRUE,        // bItalic 
         FALSE,       // bUnderline 
         0,           // cStrikeOut 
         ANSI_CHARSET,              // nCharSet 
         OUT_DEFAULT_PRECIS,        // nOutPrecision 
         CLIP_DEFAULT_PRECIS,       // nClipPrecision 
         DEFAULT_QUALITY,           // nQuality 
         DEFAULT_PITCH | FF_SWISS, // nPitchAndFamily 
         _T("Arial"));

    m_editControl.SetFont(&f); 
    m_editControl.SetWindowText("问专家"); 
    GetDlgItem(IDC_STATIC1)->SetFont(&f);

    运行后就得不到想要的效果了,因为OnInitDialog函数执行完毕,CFont f就会被清除。必须保证SetFont设置的字体对象在对话框关闭前一直有效。所以通常是使用指针或类成员的方式来保存所建立的字体对象。 
    非MFC程序,首先用CreateFont来建立一个字体句柄,然后再用SendMessage发给控件WM_SETFONT消息,将建立的字体句柄赋值过去,就可以了。

    cHeight是字体的高度。
    cWidth是字体的宽度。
    cEscapement是字体的倾斜角。
    cOrientation是字体的倾斜角。
    cWeight是字体的粗细。
    bItalic是字体是否斜体。
    bUnderline是字体是否有下划线。
    bStrikeOut是字体是否有删除线。
    iCharSet是字体使用的字符集。
    iOutPrecision是指定如何选择合适的字体。
    iClipPrecision是用来确定裁剪的精度。
    iQuality是怎么样跟选择的字体相符合。

    iPitchAndFamily是间距标志和属性标志。

    pszFaceName是字体的名称。

    CreateFont()函数的MSDN翻译

    函数功能:该函数创建一种有特殊性的逻辑字体,此逻辑字体可以在后面被任何设备选择。

        函数原型:HFONT CreateFont(int nHeight, 
                               int nWidth, 
                               int nEscapement, 
                               int nOrientation, 
                               int fnWeight, 
                               DWORD fdwltalic, 
                               DWORD fdwUnderline, 
                               DWORD fdwStrikeOut, 
                               DWORD fdwCharSet, 
                               DWORD fdwOutputPrecision, 
                               DWORD fdwClipPrecision, 
                               DWORD fdwQuality, 
                               DWORD fdwPitchAndFamily, 
                               LPCTSTR lpszFace);

        nHeight:指定字体的字符单元或字符的逻辑单位高度,字符的高度值(也被称为em高度)是指字符单元高度值减去内部标头值。字体映射器以如下方式解释nHeight指定的值,各值含义为:

        >0:字体映射器转换这个值以设备单位,并和已有字体的单元高度相匹配。

        0:字体映射器转换在选择匹配时用一个缺省的高度值。

        <0:字体映射器转换这个值到设备单位,并将它的绝对值和已有字体的字符高度相匹配。

        比较所有的高度,字体映射器选择不超过要求大小的最大字体。

        此映射当字体第一次被使用时发生。

        对于MM_TEXT映射方式,可以用下面的公式为一种指定了点大小的字体确定高度:

        nHeight=-MulDiv(PointSize, GetDeviceCaps(hDC, LOGPIXELSY),72)

        nWidth:指定所要求字体的字符的逻辑单位的平均宽度。如果此值为0,字体映射器选择一个closest match值,closest match值是由比较当前设备的特征系数与可使用字体的数字化特征系数之差的绝对值而确定的。

        nEscapement:指定移位向量和设备X轴之间的一个角度,以十分之一度为单位。移位向量平行于正文行的基线。

        Windows NT:当图形设备设置为GM_ADVANCED时,可以不依赖字符串的字符的定位角而指定字符串的移位角。

        当图形模式被设置为GM_COMPATIBLE时,nEscapement同时指定移位角和定位角,可以设置nEscapement和nOrientation为相同的值。

        Windows 95:nEscapement同时指定移位角和定位角,可设置nEscapement和nOrientation为相同的值。

        nOrientation:指定每个字符的基线和设备X轴之间的角度。

        FnWeight:在0到1000之间指定字体的权值,如400表示标准体,700表示黑(粗)体,如果此值为0,则使用缺省的权值。

        为方便定义,可使用如下值:

        FW_DONTCARE:0;FW_THIN;100;FW_EXTRALIGHT;200;FW_ULTRALIGHT;200;FW_LIGHT;300;

        FW_NORMAL:400;FW_REGULAR;400;FW_MEDIUM;500;FW_SEMIBOLD;600;FW_DEMIBOLD;600;

        FW_BOLD:700;FW_EXTRABOLD;800;FW_ULTRABOLD;800;FW_HEAVY;900;FW_BLACK;900。

        fdwItalic:如果设置为TRUE则指定斜体。

        fdwUnderline:如果设置为TRUE,则指定加下划线的字全。

        fdwStrikeOut:如果设置为TRUE,则strikeout指定字体。

        fdwCharSet:指定字符集,下列值是预定义的:

        ANSI_CHARSET; BALTIC_CHARSET; CHINESEBIG5_CHARSET; DEFAULT_CHARSET;

        EASTEUROPE_CHARSET; GB2312_CHARSET; GREEK_CHARSET; HANGUL_CHARSET; MAC_CHARSET; OEM_CHARSET; RUSSIAN_CHARSET; SHIFTJIS_CHARSET;

        SYMBOL_CHARSET; TURKISH_CHARSET。

        韩国Windows:JOHAB_CHARSET;

        中东地区Windows:HEBREW_CHARSSET; ARABIC_CHARSET

        泰国Windows:THAI_CHARSET

        OEM_CHARSET指定的字符集与操作系统有关。

        可以使用DEFAULT_CHARSET值来允许字体的名字和大小来充分描述逻辑字体。如果指定的字体名不存在,任何字符集的字体都可以替代指定的字体,所以应该小心地用DEFAULT_CHARSET来避免不期望的结果出现。

        操作系统中存在其他字符集的字体。如果一个应用程序用一种未知字符集的字体,则应用程序不会试图去翻译或解释用那种字体写出来的字符串。

        在字体映射过程中此参数很重要。为确保获得一致的结果,指定一个特殊的字符集。如果在lpszFace参数中指定了一个字体名,确定fdwCharSet值与由lpszFace指定的字体字符集是否匹配。

        fdwOutputPrecision:指定输出精度,输出精度义输出与要求的字体高度、宽度、字符定位、移位、字符间距和字符类型的匹配程序,它可取下列值之一:

        OUT_CHARACTER_PRECIS;未用。

        OUT_DEFAULT_PRECIS:指定缺省的字体映射器状态。

        OUT_DEVICE_PRECIS:指示字体映射器在当系统里有多种字体使用同一个字体使用同一个名字时选择一种设备字体。

        OUT_OUTLINE_PRCIS:在Windows NT中此值指示字体映射器从TrueType和其他基于边框的字体中选择。

        OUT_RASTER_PRECIS:指示字体映射器在当系统里有多种字体使用同一个名字时选择一种光栅字体。

        OUT_STRING_PRECIS:此值没有被字全映射器使用,但是当扫描字体被列举时作为返回值。

        OUT_STROKE_PRECIS:在Windows NT中此值没有被字体映射器使用,但是当TrueType字体、其他基于边框的字体和向量字体被列举时,作为返回值。

        Windows 95:此值没有被字体映射器使用,但是当TrueType字体或向量字体被列举时,作为返回值。

        OUT_TT_ONLY_PRECIS:指示字体映射器仅从TrueType字体中选择,如果系统中没有安装TrueType字体,则字体映射返回缺省状态。、

        OUT_TT_PRECIS:指示字体映射器在当系统里有多种同名的字体时选择一种TrueType字体。

        当操作系统含有多种与指定名字同名的字体时,应用程序可以使用OUT_DEVICE_PRECIS,OUT_RASTER_PRECIS和OUT_TT_PRECIS值来控制字体映射器如何选择一种字体,例如,如果操作系统含有名字Symbol的光栅和TrueType两种字体,指定OUT_TT_PRECIS使字体映射器选择TrueType方式。指定OUT_TT_ONLY_PRECIS使字体映射器选择一种TrueType字体,尽管这会给TrueType字体换一个名字。

        fdwClipPrecision;指定裁剪精度,裁剪精度定义如何裁剪部分超出裁剪区的字符,它可取一个或多个下列值:

        CLIP_DEFAULT_PRECIS:指定缺省裁剪状态。CLIP_CHARACTER_PRECIS:未用。

        CLIP_STROKE_PRECIS:未被字体映射器使用,但是当光栅字体、向量字体或TrueType字体被列举时作为返回值。在Windows环境下,为保证兼容性,当列举字体时这个值总被返回。

        CLIP_MASK:未用。CLIP_EMBEDDED:要使用嵌入式只读字体必须使用此标志。

        CLIP_LH_ANGLES:当此值被使用时,所有字体的旋转依赖于坐标系统的定位是朝左的还是朝右的。

        如果未使用此值,设备字体总是逆时针方向旋转,但其他字体的旋转依赖于坐标系统的定向。要得到更多关于坐标系统定向的信息,参见参数orientation。

        CLIP_TT_ALWAYS:未用。

        fdwQuality:指向输出质量,输出质量定义GDI如何仔细地将逻辑字体属性与实际物理字体属性相匹配。它可取下列值之一:

        DEFAULT_QUALITY:字体的外观不重要。

        DRAFT_QUALITY:字体外观的重要性次于使用PROOF_QUALITY时,对GDI光栅字体,缩放比例是活动的,这意味着多种字体大小可供选择,但质量可能不高,如果有必要,粗体、斜体、下划线、strikeout字体可被综合起来使用。

        PROOF_QUALITY:字符质量比精确匹配逻辑字体字体属性更重要。对GDI扫描字体,缩放比例是活动的,并选择最接近的大小。尽管当使用PROOF_QUALITY时,选择字体大小并不完全匹配,但字体的质量很高,并没有外观上的变形。如果有必要,粗体、斜体、下划线、strikeout字体可被综合起来使用。

        fdwPitchAndFamily:指定字体间距和字体族,低端二位指定字体的字符间距,它可取下列值之一:

        DEFAULT_PITCH;FIXED_PITCH; VARIABLE_PITCH

        高端四位指定字体族,可取下列值之一:

        FF_DECORATIVE:新奇的字体,如老式英语(Old English)。FF_DONTCARE:不关心或不知道。

        FF_MDERN:笔划宽度固定的字体,有或者无衬线。如Pica、Elite和Courier New。

        FF_ROMAN:笔划宽度变动的字体,有衬线。如MS Serif。

        FF_SCRIPT:设计成看上去象手写体的字体。如Script和Cursive。

        FF_SWISS:笔划宽度变动的字体,无斜线。如MS Sans Serif。

        应用程序可以用运算符OR将字符间距和字体族组合起来给fdwPitchAndFamily赋值。

        字体族描述一种字体的普通外观,当所有的精确字样都不能使用时,可用它们来指定字体。

        lpszface:指向指定字体的字样名的、以/0结束的字符串指针,字符串的长度不能超过32个字符(包括字符/0),函数EnumFontFamilies可用来列举所有当前可用字体的字样名。

        如果lpszFace为NULL或指向一个空串,GDI使用能匹配其他属性的第一种字体。

        返回值:如果函数调用成功,返回值是一种逻辑字体句柄;如果函数调用失败,返回值为NULL。

        Windows NT:若想获得更多错误信息,请调用GetLastError函数。

        备注:当一种字体不再使用时,可用DeleteObject来删除。

        为保护那些提供字体给Windows和Windows NT的卖主的版权,基于Win32的应用程序总是列出所选择字体的准确名字。由于不同的系统会使用不同的字体,不要认为所选择字体就是要求的字体。例如,如果要求名叫Palatino的字体,但系统没提供那样一种字体,则字体映射器将会以一种不同名但有相似属性的字体取而代之。系统总是将用户选择的字体名报告出来。

        速查:Windows NT:3.1及以上版本;Windows

    展开全文
  • MFC中,包含多个对话框,子对话框在Tab控件中显示,让子对话框中的控件跟随主对话框大小变化而变化,字体也能够缩放,但是不能加载图片控件,只对控件和字体缩放,单个对话框也适用,简单易懂。主要有一个CLout类,...
  •  VC++之随父窗口变化调整控件大小之随父窗口变化调整控件大小之随父窗口变化调整...控件是从CWnd派生的,但不能使用SetWindowPos()或OnSize()或OnSizing()来改变大小,应在父窗口的WM_SIZE消息中使用MoveWindo
  • 动态改变对话框可调整大小属性

    千次阅读 2015-11-13 15:00:36
    MFC的对话框CDialog是怎么控制窗口可调整大小的属性的呢?打开资源文件,对话框资源的属性列表中,有一个“Border”项,改变该项的值就... WS_BORDER- Thin-line border,不能调整大小;  WS_DLGFRAME -dialog box
  • EasyUI 创建对话框

    2016-09-27 10:21:00
    默认对话框不能改变大小,但是用户可以设置resizeable属性为true来使它可以被改变大小:对话框非常简单,可以使用DIV标记创建: <divid="dd"style="padding:5px;width:400px;height:200px;"> Dialog...
  • MFC的对话框CDialog是怎么控制窗口可调整大小的属性的呢?打开资源文件,对话框资源的属性列表中,有一个“Border”项,改变该项的值就... WS_BORDER - Thin-line border,不能调整大小;  WS_DLGFRAME - dia
  • 一个常见的用户失望是对话框不能调整大小。虽然有很多方法来解决这个问题,大多数是面向新代码,可以设计调整。这使得现有的身体不能调整大小的对话框。本文描述了一种方法,允许调整很容易改进的Win32对话框。通过...
  • 1 VC的对话框字体设置对所有控件都有效,你不能单独地改变某个静态文本的字体。需要首先用CreateFont来建立一个字体对象,然后调用控件的SetFont,就可以了。 例子: 1、改静态文体的ID,如:IDC_STATIC1 2...
  • VC6.0中改变控件、对话框字体(大小)

    千次阅读 2015-07-08 15:15:35
    1 VC的对话框字体设置对所有控件都有效,你不能单独地改变某个静态文本的字体。需要首先用CreateFont来建立一个字体对象,然后调用控件的SetFont,就可以了。  例子:  1、改静态文体的ID,如:IDC_STATIC1  2...
  • VC的对话框字体设置对所有控件都有效,你不能单独地改变某个静态文本的字体。对于你的问题,需要首先用CreateFont来建立一个字体对象,然后调用控件的SetFont,就可以了。 例子: 1、改静态文体的ID,如:IDC_...
  • 1 VC的对话框字体设置对所有控件都有效,你不能单独地改变某个静态文本的字体。对于你的问题,需要首先用CreateFont来建立一个字体对象,然后调用控件的SetFont,就可以了。 例子: 1、改静态文体的ID,如:ID...
  • VC的对话框字体设置对所有控件都有效,你不能单独地改变某个静态文本的字体。对于你的问题,需要首先用CreateFont来建立一个字体对象,然后调用控件的SetFont,就可以了。例子:1、改静态文体的ID,如:IDC_STATIC12...
  • 不想看思路的直接看代码处。 要实现jquery对话框根据内容大小改变直接宽度,...这个样式是css控制的,对话框也没有id,所以不能直接通过jquery设置css来改变它属性,但是要做这个肯定是存在内容,那么弹出框就是...

空空如也

空空如也

1 2 3 4 5 ... 12
收藏数 235
精华内容 94
关键字:

对话框不能改变大小