• VC字体对话框的初始化


    本代码需要先添加类成员  LOGFONT lf;

    void CMyDlg::OnButton3() 
    {
        // TODO: Add your control notification handler code here
    
        //方法一:直接给这个结构体中的结构体赋值,通过CFontDialog的构造函数实现字体对话框的初始化。
    //HDC hDC=GetDC()->m_hDC; //strcpy(lf.lfFaceName,"新宋体"); //lf.lfCharSet=DEFAULT_CHARSET; //lf.lfWeight=FW_NORMAL; //lf.lfHeight=-MulDiv(12, GetDeviceCaps(hDC, LOGPIXELSY), 72); //lf.lfWidth=8; //lf.lfItalic=FALSE; //lf.lfUnderline=FALSE; //CFontDialog cd(&lf,CF_INITTOLOGFONTSTRUCT);//参数二:取消字体对话框中的颜色。


    //方法二:不通过构造函数,而是具体给成员m_cf结构体各个成员赋值实现字体对话框的初始化。 CFontDialog cd; cd.m_cf.lStructSize
    =sizeof(CHOOSEFONT); //字体对话框对象中有个m_cf成员,它是一个结构体。 cd.m_cf.Flags|=CF_INITTOLOGFONTSTRUCT; cd.m_cf.lpLogFont=&lf;//lpLogFont又是这个m_cf成员中的成员,也是一个结构体。 cd.m_cf.hwndOwner=this->m_hWnd; cd.m_cf.rgbColors=mycolor; if (IDOK == cd.DoModal()) { if (myfont.m_hObject) { myfont.DeleteObject(); } myfont.CreateFontIndirect(cd.m_cf.lpLogFont);//myfont是CFont成员变量,需另声明。类型为CFont myfontname = cd.m_cf.lpLogFont->lfFaceName;//用于导出字体对话框中用户选择的字体名称,myfontname也是成员变量,需另声明。类型为CString mycolor = cd.m_cf.rgbColors;//用于导出字体对话框用户选择的颜色,mycolor也是成员变量,需另声明。类型为COLORREF Invalidate();本语句使窗体重绘,具体绘制代码如下: } }
    void CMyDlg::OnPaint() 
    {
        
    //////////////////////////////////////////////////////////////////////////////////////////////////


    CPaintDC dc(
    this); CFont* oldfont = dc.SelectObject(&myfont);//重绘时把字体选入设备 dc.SetBkMode(TRANSPARENT);//设置背景模式为透明 dc.SetTextColor(mycolor);//设置输出的字符串颜色 dc.TextOut(10,10,myfontname);//指定位置输出文本,这里是表示字体对话框中用户选择的字体名称 dc.SelectObject(oldfont);//还原设备字体



    ////////////////////////////////////////////////////////////////////////////////////////////////////
    if (IsIconic()) { CPaintDC dc(this); // device context for painting SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0); // Center icon in client rectangle int cxIcon = GetSystemMetrics(SM_CXICON); int cyIcon = GetSystemMetrics(SM_CYICON); CRect rect; GetClientRect(&rect); int x = (rect.Width() - cxIcon + 1) / 2; int y = (rect.Height() - cyIcon + 1) / 2; // Draw the icon dc.DrawIcon(x, y, m_hIcon); // CDC*p=this->GetDC(); } else { CDialog::OnPaint(); } }
  • 相关阅读:
    设计模式-结构型模式总结
    设计模式-享元模式
    设计模式-组合模式
    设计模式-桥接模式
    设计模式-装饰器模式
    设计模式-外观模式
    设计模式-代理模式
    设计模式-适配器模式
    VMware该虚拟机似乎正在使用中
    BurpSuite-Burp Proxy
  • 原文地址:https://www.cnblogs.com/webcyz/p/6592528.html
Copyright © 2020-2023  润新知