GetCharWidth32

news/2023/6/5 21:20:33

#include <windows.h>
#include<stdio.h>
// 窗口函数的函数原形
LRESULT CALLBACK MainWndProc(HWND, UINT, WPARAM, LPARAM);int APIENTRY WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR     lpCmdLine,int       nCmdShow)
{char szClassName[] = "MainWClass";    WNDCLASSEX wndclass;// 用描述主窗口的参数填充WNDCLASSEX结构wndclass.cbSize = sizeof(wndclass);    // 结构的大小wndclass.style = CS_HREDRAW|CS_VREDRAW;    // 指定如果大小改变就重画wndclass.lpfnWndProc = MainWndProc;    // 窗口函数指针wndclass.cbClsExtra = 0;        // 没有额外的类内存wndclass.cbWndExtra = 0;        // 没有额外的窗口内存wndclass.hInstance = hInstance;        // 实例句柄 wndclass.hIcon = ::LoadIcon(NULL, IDI_APPLICATION);    // 使用预定义图标wndclass.hCursor = ::LoadCursor(NULL,IDC_ARROW);        // 使用预定义的光标wndclass.hbrBackground = (HBRUSH)::GetStockObject(WHITE_BRUSH);    // 使用白色背景画刷wndclass.lpszMenuName = NULL;        // 不指定菜单wndclass.lpszClassName = szClassName ;    // 窗口类的名称    wndclass.hIconSm = NULL;        // 没有类的小图标// 注册这个窗口类::RegisterClassEx(&wndclass); // 创建主窗口HWND hwnd = ::CreateWindowEx( 0,            // dwExStyle,扩展样式    szClassName,        // lpClassName,类名            "My first Window!",    // lpWindowName,标题        WS_OVERLAPPEDWINDOW,    // dwStyle,窗口风格    CW_USEDEFAULT,        // X,初始 X 坐标        CW_USEDEFAULT,        // Y,初始 Y 坐标        640,        // nWidth,宽度            480,        // nHeight,高度            NULL,            // hWndParent,父窗口句柄            NULL,            // hMenu,菜单句柄        hInstance,        // hlnstance,程序实例句柄        NULL) ;            // lpParam,用户数据            if(hwnd == NULL){::MessageBox(NULL, "创建窗口出错!", "error", MB_OK);return -1;}// 显示窗口,刷新窗口客户区
    ::ShowWindow(hwnd, nCmdShow);::UpdateWindow(hwnd);// 从消息堆中取出消息
    MSG msg;    while(::GetMessage(&msg, NULL, 0, 0)){// 转化键盘消息::TranslateMessage(&msg);// 将消息发送到相应的窗口函数::DispatchMessage(&msg);}// 当GetMessage返回0时程序结束return msg.wParam;
}LRESULT CALLBACK MainWndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{char szText[] = "最简单的窗口程序!";switch (message){         case WM_PAINT: // 窗口客户区需要重画
        {HDC hdc;PAINTSTRUCT ps;// 使无效的客户区变的有效,并取得设备环境句柄hdc = ::BeginPaint (hwnd, &ps) ;    // 显示文字::TextOut(hdc, 10, 10, szText, strlen(szText));::EndPaint(hwnd, &ps);return 0;}    case WM_CREATE:HDC   hdc ;HFONT    hFont; int arr[91];FILE * pFile;fopen_s (&pFile,"file.txt","w+");hdc = GetDC(hwnd);         hFont = CreateFont(-15, 0,0,0, FW_BOLD, false, false, false, DEFAULT_CHARSET,OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, ANTIALIASED_QUALITY, DEFAULT_PITCH,"Arial");SelectObject(hdc, hFont); GetCharWidth32(hdc,32,122,arr);for(int i=0;i<91;i++)fprintf(pFile,"%c-->%d\n",' '+i,arr[i]);fclose(pFile);return 0;case WM_DESTROY: // 正在销毁窗口// 向消息队列投递一个WM_QUIT消息,促使GetMessage函数返回0,结束消息循环::PostQuitMessage(0) ;return 0 ;}// 将我们不处理的消息交给系统做默认处理return ::DefWindowProc(hwnd, message, wParam, lParam);
}

转载于:https://www.cnblogs.com/qiangua/p/3470014.html


https://dhexx.cn/news/show-17913.html

相关文章

Java基础之LinkedList

Java基础之LinkedList一、介绍二、add()一、介绍 底层是一个双向链表实现的List&#xff0c;内部每一个节点采用内部类Node表示&#xff0c;通过first、last引用分别指向链表的第一和最后一个元素非线程安全&#xff0c;可以用Collections.synchronizedList()方法对其进行包装…

phoenix全局索引和本地索引 概述,使用场景,区别等详解

索引类型 phoenix的索引大致分为两类global index和local index&#xff0c;好像和星环有点类似&#xff0c;其实这是hbase二级索引解决方案里面广为人知的两种方案&#xff0c;侧重点不同&#xff0c;使用场景也不一样。 global index&#xff0c;global是默认的索引格式。官…

Java基础之并发理论基础

Java基础之并发理论基础一、为什么需要多线程二、线程不安全1、三要素之一可见性&#xff08;CPU缓存引起&#xff09;2、三要素之一原子性&#xff08;分时复用引起&#xff09;3、三要素之一有序性&#xff08;重排序引起&#xff09;三、解决方案1、原子性角度2、可见性角度…

LeetCode:Sqrt(x)

题目链接 Implement int sqrt(int x). Compute and return the square root of x. 面试时需要考虑x是否小于0. 分析&#xff1a;牛顿法&#xff0c;先假设一个初始解res&#xff08;本文设为1&#xff09;&#xff0c;然后以抛物y x^2-c&#xff08;这里的c相当于题目中的x&am…

phoenix 全局索引设计实践

概述 全局索引是Phoenix的重要特性&#xff0c;合理的使用二级索引能降低查询延时&#xff0c;让集群资源得以充分利用。 本文将讲述如何高效的设计和使用索引。 全局索引说明 全局索引的根本是通过单独的HBase表来存储数据表的索引数据。我们通过如下示例看索引数据和主表数…

学习ForkJoin

学习ForkJoin一、普通解决多线程方式1、案例一2、效果图二、ForkJoin一、普通解决多线程方式 1、案例一 大数据量的List问题处理&#xff0c;多线程分批处理&#xff0c;需要解决的问题&#xff1a; 下标越界。线程安全。数据丢失。 private static ThreadPoolExecutor thre…

Windows下搭建PHP开发环境

PHP集成开发环境有很多&#xff0c;如XAMPP、AppServ......只要一键安装就把PHP环境给搭建好了。但这种安装方式不够灵活&#xff0c;软件的自由组合不方便&#xff0c;同时也不利于学习。所以我还是喜欢手工搭建PHP开发环境&#xff0c;需要哪个模块自己安装就行了&#xff0c…

HBase整体架构 和 HMaster,HRegionServer概述

1.1 HMaster HMaster没有单点问题&#xff0c;HBase中可以启动多个HMaster&#xff0c;通过Zookeeper的Master Election机制保证总有一个Master运行&#xff0c;HMaster在功能上主要负责Table和Region的管理工作&#xff1a; 管理用户对Table的增、删、改、查操作(admin操作);管…

【伯乐在线】最好的学习方法是什么样的?

本文由 伯乐在线 - whysear 翻译自 Ahmad Ali。未经许可&#xff0c;禁止转载&#xff01;欢迎加入&#xff1a;翻译小组&#xff0c;通过 翻译频道 贡献一份力量。【导读】&#xff1a;这个问题来自Quora&#xff0c;提问者还补充说&#xff1a;“任何方法都可以&#xff0c;从…

linux地址空间划分

LDD讲的很明白了&#xff1a; Linux 是一个虚拟内存系统, 意味着用户程序见到的地址不直接对应于硬件使用的物理地址. 虚拟内存引入了一个间接层, 它允许了许多好事情. 有了虚拟内存, 系统重运行的程序可以得到远多于物理内存的空间。确实, 即便一个单个进程可拥有一个虚拟地址…