4134|4

72

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

vs2008中如何动态加载新字体?在线等,多谢 [复制链接]

vs2008开发智能设备程序,需要用到一种字体,如何在程序里面动态加载,而不是调用系统的字体?

最新回复

            IntPtr hfnew = CreateFont(0, 0, 0, 0, 0, 0, 0, 0, 1, 5, 0, 0, 0, "NI7SEG(TrueType)");                         IntPtr Hdc = GetDC(IntPtr.Zero);             SelectObject(Hdc, hfnew);             this.label1.Font = System.Drawing.Font.FromHdc(hfnew);//这里说我用的字体不是truetype的,可我的字体文件中明明写的是truetype,是不是那里写的不对?   详情 回复 发表于 2009-7-10 09:01
点赞 关注

回复
举报

80

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
This function adds the font resource from the specified file to the Windows font table. The font can subsequently be used for text output by any Microsoft? Windows? CE–based application.

int AddFontResource(
  LPCTSTR lpszFilename
);
 
 

回复

68

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
using System;
using System.Linq;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Runtime.InteropServices;


namespace SmartDeviceProject1
{
    public partial class Form1 : Form
    {
        private static IntPtr HWND_BROADCAST = new IntPtr(0xffff);
        private static IntPtr HWND_TOP = new IntPtr(0);
        private static IntPtr HWND_BOTTOM = new IntPtr(1);
        private static IntPtr HWND_TOPMOST = new IntPtr(-1);
        private static IntPtr HWND_NOTOPMOST = new IntPtr(-2);
        private static IntPtr HWND_MESSAGE = new IntPtr(-3);

        //[DllImport("gdi32.dll", ExactSpelling = true)]
        [DllImport("coredll.dll", SetLastError = true)]

        static extern int AddFontResource(string lpFilename);

        [DllImport("coredll.dll")]
        static extern bool RemoveFontResource(string lpFileName);

        [DllImport("coredll.dll", CharSet = CharSet.Auto)]
        private static extern int SendMessage(IntPtr hWnd, WindowsMessages wMsg, IntPtr wParam, IntPtr lParam);

        public Form1()
        {
            InitializeComponent();
        
            int ret = AddFontResource("d:\\download\\Ni7seg.ttf");           //这里执行完以后ret=0,表示失败,不知为何?
            long result = SendMessage(HWND_BROADCAST, WindowsMessages.WM_FONTCHANGE, IntPtr.Zero, IntPtr.Zero);
   
            this.label1.Font = new System.Drawing.Font("NI7SEG", 72F, System.Drawing.FontStyle.Bold);
            this.label1.Location = new System.Drawing.Point(12, 148);
            this.label1.Name = "label1";
            this.label1.Size = new System.Drawing.Size(787, 173);
            this.label1.Text = "1.234567890";
        }

        private void Form1_Load(object sender, EventArgs e)
        {

        }


        private void label1_ParentChanged(object sender, EventArgs e)
        {

        }

        public enum WindowsMessages
        {
            //Snipped for length - see the list of WM_ calls on this site.
            WM_NULL=0x0000,
            WM_CREATE=0x0001,
            WM_DESTROY=0x0002,
            WM_MOVE=0x0003,
            WM_SIZE=0x0005,
            WM_ACTIVATE=0x0006,
            WM_SETFOCUS=0x0007,
            WM_KILLFOCUS=0x0008,
            WM_ENABLE=0x000A,
            WM_SETREDRAW=0x000B,
            WM_SETTEXT=0x000C,
            WM_GETTEXT=0x000D,
            WM_GETTEXTLENGTH=0x000E,
            WM_PAINT=0x000F,
            WM_CLOSE=0x0010,
            WM_QUERYENDSESSION=0x0011,
            WM_QUIT=0x0012,
            WM_QUERYOPEN=0x0013,
            WM_ERASEBKGND=0x0014,
            WM_SYSCOLORCHANGE=0x0015,
            WM_ENDSESSION=0x0016,
            WM_SYSTEMERROR=0x0017,
            WM_SHOWWINDOW=0x0018,
            WM_ACTIVATEAPP=0x001C,
            WM_FONTCHANGE=0x001D,
            WM_TIMECHANGE=0x001E,
            WM_CANCELMODE=0x001F,
            WM_SETCURSOR=0x0020,
            WM_MOUSEACTIVATE=0x0021,
            WM_CHILDACTIVATE=0x0022,
            WM_QUEUESYNC=0x0023,
            WM_GETMINMAXINFO=0x0024,
            WM_PAINTICON=0x0026,
            WM_ICONERASEBKGND=0x0027,
            WM_NEXTDLGCTL=0x0028,
            WM_SPOOLERSTATUS=0x002A,
            WM_DRAWITEM=0x002B,
            WM_MEASUREITEM=0x002C,
            WM_DELETEITEM=0x002D,
            WM_VKEYTOITEM=0x002E,
            WM_CHARTOITEM=0x002F,
            WM_SETFONT=0x0030,
            WM_GETFONT=0x0031,
            WM_SETHOTKEY=0x0032,
            WM_GETHOTKEY=0x0033,
            WM_QUERYDRAGICON=0x0037,
            WM_COMPAREITEM=0x0039,
            WM_GETOBJECT=0x003D,
            WM_COMPACTING=0x0041,
            WM_WINDOWPOSCHANGING=0x0046,
            WM_WINDOWPOSCHANGED=0x0047,
            WM_POWER=0x0048,
            WM_COPYDATA=0x004A,
            WM_CANCELJOURNAL=0x004B,
            WM_NOTIFY=0x004E,
            WM_INPUTLANGCHANGEREQUEST=0x0050,
            WM_INPUTLANGCHANGE=0x0051,
            WM_TCARD=0x0052,
            WM_HELP=0x0053,
            WM_USERCHANGED=0x0054,
            WM_NOTIFYFORMAT=0x0055,
            WM_CONTEXTMENU=0x007B,
            WM_STYLECHANGING=0x007C,
            WM_STYLECHANGED=0x007D,
            WM_DISPLAYCHANGE=0x007E,
            WM_GETICON=0x007F,
            WM_SETICON=0x0080,
            WM_NCCREATE=0x0081,
            WM_NCDESTROY=0x0082,
            WM_NCCALCSIZE=0x0083,
            WM_NCHITTEST=0x0084,//移动鼠标,按住或释放鼠标时发生
            WM_NCPAINT=0x0085,
            WM_NCACTIVATE=0x0086,
            WM_GETDLGCODE=0x0087,
            WM_NCMOUSEMOVE=0x00A0,
            WM_NCLBUTTONDOWN=0x00A1,
            WM_NCLBUTTONUP=0x00A2,
            WM_NCLBUTTONDBLCLK=0x00A3,
            WM_NCRBUTTONDOWN=0x00A4,
            WM_NCRBUTTONUP=0x00A5,
            WM_NCRBUTTONDBLCLK=0x00A6,
            WM_NCMBUTTONDOWN=0x00A7,
            WM_NCMBUTTONUP=0x00A8,
            WM_NCMBUTTONDBLCLK=0x00A9,
            WM_KEYFIRST=0x0100,
            WM_KEYDOWN=0x0100,
            WM_KEYUP=0x0101,
            WM_CHAR=0x0102,
            WM_DEADCHAR=0x0103,
            WM_SYSKEYDOWN=0x0104,
            WM_SYSKEYUP=0x0105,
            WM_SYSCHAR=0x0106,
            WM_SYSDEADCHAR=0x0107,
            WM_KEYLAST=0x0108,
            WM_INITDIALOG=0x0110,
            WM_COMMAND=0x0111,
            WM_SYSCOMMAND=0x0112,
            WM_TIMER=0x0113,//发生了定时器事件
            WM_HSCROLL=0x0114,
            WM_VSCROLL=0x0115,
            WM_INITMENU=0x0116,
            WM_INITMENUPOPUP=0x0117,
        }

    }
}
 
 
 

回复

77

帖子

0

TA的资源

一粒金砂(初级)

4
 
关注一下
 
 
 

回复

70

帖子

0

TA的资源

一粒金砂(初级)

5
 
            IntPtr hfnew = CreateFont(0, 0, 0, 0, 0, 0, 0, 0, 1, 5, 0, 0, 0, "NI7SEG(TrueType)");
           
            IntPtr Hdc = GetDC(IntPtr.Zero);
            SelectObject(Hdc, hfnew);
            this.label1.Font = System.Drawing.Font.FromHdc(hfnew);//这里说我用的字体不是truetype的,可我的字体文件中明明写的是truetype,是不是那里写的不对?
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/8 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表