zoukankan      html  css  js  c++  java
  • 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(); } }
  • 相关阅读:
    makefile中的使用 VAPTH 和“自动变量”指定目标文件的存放目录
    用Temp Table方法 替換遊標cursor
    生成XML、讀取XML
    Update方法的迭代
    串欄位list新招,不用建ufn.
    函數返回一個用分隔符連接起的字符串,其中每個單位的字符串不重復存在
    Select的迭代方法
    行列轉換方法
    行列轉換方法(超詳細方法)
    行列轉換方法(超過3列)
  • 原文地址:https://www.cnblogs.com/webcyz/p/6592528.html
Copyright © 2011-2022 走看看