windows程序设计 之 「HEAD」范例分析笔记

windows下搭建ElasticSearch系统及配置head插件 1、java环境的配置 这部分就不细说了,大家在其他博客里都可以搜到如何配置,但需要注意的是es系统现在需要的jdk版本是1.8的。 2、配置ElasticSearch (1)首先到 https://www.elastic.co/cn/downloads/elasticsearch 下载es ,因为是windows下搭建系统,所以选择zip下载。 (2)将下载的zip解压到某个目录下,... 阅读详情

/*---------------------------------------------
   HEAD.C -- Displays beginning (head) of file
             (c) Charles Petzold, 1998
  ---------------------------------------------*/

 

#include <windows.h>

#define ID_LIST     1
#define ID_TEXT     2

#define MAXREAD     8192
#define DIRATTR     (DDL_READWRITE | DDL_READONLY | DDL_HIDDEN | DDL_SYSTEM | /
                                DDL_DIRECTORY | DDL_ARCHIVE  | DDL_DRIVES)
                    
                     //DT_WORDBREAK:断开字,当一行中的字符将会延伸到由lpRect指定的矩形的边框时,此行自动地在字之间断开。
                     //DT_EXPANDTABS:扩展制表符,每个制表符的缺省字符数是8
                     //DT_NOCLIP:无裁剪绘制
                     //DT_NOPREFIX:关闭前缀字符的处理.通常DrawText解释助记前缀字符,&为给其后的字符加下划线,

                     //解释&&为显示单个&。指定DT_NOPREFIX,这种处理被关闭。
#define DTFLAGS     (DT_WORDBREAK | DT_EXPANDTABS | DT_NOCLIP | DT_NOPREFIX)

 

LRESULT CALLBACK WndProc  (HWND, UINT, WPARAM, LPARAM) ;
LRESULT CALLBACK ListProc (HWND, UINT, WPARAM, LPARAM) ;

 

WNDPROC OldList ;

 

int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
                    PSTR szCmdLine, int iCmdShow)
{
     static TCHAR szAppName[] = TEXT ("head") ;
     HWND         hwnd ;
     MSG          msg ;
     WNDCLASS     wndclass ;
    
     wndclass.style         = CS_HREDRAW | CS_VREDRAW ;
     wndclass.lpfnWndProc   = WndProc ;
     wndclass.cbClsExtra    = 0 ;
     wndclass.cbWndExtra    = 0 ;
     wndclass.hInstance     = hInstance ;
     wndclass.hIcon         = LoadIcon (NULL, IDI_APPLICATION) ;
     wndclass.hCursor       = LoadCursor (NULL, IDC_ARROW) ;
     wndclass.hbrBackground = (HBRUSH) (COLOR_BTNFACE + 1) ;
     wndclass.lpszMenuName  = NULL ;
     wndclass.lpszClassName = szAppName ;
    
     if (!RegisterClass (&wndclass))
     {
          MessageBox (NULL, TEXT ("This program requires Windows NT!"),
                      szAppName, MB_ICONERROR) ;
          return 0 ;
     }

 


     //WS_CLIPCHILDREN:当在父窗口内绘图时,排除子窗口区域。在创建父窗口时使用这个风格
     hwnd = CreateWindow (szAppName, TEXT ("head"),
                          WS_OVERLAPPEDWINDOW | WS_CLIPCHILDREN,
                          CW_USEDEFAULT, CW_USEDEFAULT,
                          CW_USEDEFAULT, CW_USEDEFAULT,
                          NULL, NULL, hInstance, NULL) ;
    
     ShowWindow (hwnd, iCmdShow) ;
     UpdateWindow (hwnd) ;
    
     while (GetMessage (&msg, NULL, 0, 0))
     {
          TranslateMessage (&msg) ;
          DispatchMessage (&msg) ;
     }
     return msg.wParam ;
}

 

 

LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
     static BOOL       bValidFile ;
     static BYTE        buffer[MAXREAD] ;
     static HWND     hwndList, hwndText ;
     static RECT       rect ;
     static TCHAR    szFile[MAX_PATH + 1] ;  //windows的MAX_PATH是260   盘符+:/+结尾的0+256=260
     HANDLE           hFile ;
     HDC                 hdc ;
     int                    i, cxChar, cyChar ;
     PAINTSTRUCT     ps ;
     TCHAR             szBuffer[MAX_PATH + 1] ;
    
     switch (message)
     {
     case WM_CREATE :
          cxChar = LOWORD (GetDialogBaseUnits ()) ;
          cyChar = HIWORD (GetDialogBaseUnits ()) ;
         
          rect.left = 20 * cxChar ;
          rect.top  =  3 * cyChar ; //计算得出用于显示文件具体信息的窗口区域
         
          hwndList = CreateWindow (TEXT ("listbox"), NULL,
                              WS_CHILDWINDOW | WS_VISIBLE | LBS_STANDARD,
                              cxChar, cyChar * 3,
                              cxChar * 13 + GetSystemMetrics (SM_CXVSCROLL),
                              cyChar * 10,
                              hwnd, (HMENU) ID_LIST,
                              (HINSTANCE) GetWindowLong (hwnd, GWL_HINSTANCE),
                              NULL) ;

          GetCurrentDirectory (MAX_PATH + 1, szBuffer) ;  //装载程序进程的当前目录到szBuffer
         
          hwndText = CreateWindow (TEXT ("static"), szBuffer,
                              WS_CHILDWINDOW | WS_VISIBLE | SS_LEFT,
                              cxChar, cyChar, cxChar * MAX_PATH, cyChar,
                              hwnd, (HMENU) ID_TEXT,
                              (HINSTANCE) GetWindowLong (hwnd, GWL_HINSTANCE),
                              NULL) ;
                             
          //将句柄为hwndList的子窗口控件的窗口消息处理程序挂钩到ListProc函数
          OldList = (WNDPROC) SetWindowLong (hwndList, GWL_WNDPROC, (LPARAM) ListProc) ;


          //添加程序进程当前目录下的文件列表到清单方块控件中
          SendMessage (hwndList, LB_DIR, DIRATTR, (LPARAM) TEXT ("*.*")) ;
          return 0 ;
         
     case WM_SIZE :
          //得到用于显示文件具体信息的窗口区域
          rect.right  = LOWORD (lParam) ;
          rect.bottom = HIWORD (lParam) ;
          return 0 ;
         
     case WM_SETFOCUS :
          //父窗口直接转移焦点到清单方块控件上
          SetFocus (hwndList) ;
          return 0 ;
         
     case WM_COMMAND :
          //如果在清单方块控件中执行双击
          if (LOWORD (wParam) == ID_LIST && HIWORD (wParam) == LBN_DBLCLK) 
          {
                     //获得选中项目的索引
               if (LB_ERR == (i = SendMessage (hwndList, LB_GETCURSEL, 0, 0))) 
                    break ;
                   
               //保存双击的文件名称到szBuffer
               SendMessage (hwndList, LB_GETTEXT, i, (LPARAM) szBuffer) ;
              
                // INVALID_HANDLE_VALUE 表无效句柄值
                //CreateFile(指向文件名的指针,访问模式,共享模式,指向安全属性的指针,
                //           如何创建,文件属性,用于复制文件句柄);    执行成功返回文件句柄

               if (INVALID_HANDLE_VALUE != (hFile = CreateFile (szBuffer, GENERIC_READ, FILE_SHARE_READ, NULL,
                                                                                                OPEN_EXISTING, 0, NULL)))

               {
                    CloseHandle (hFile) ; //关闭文件句柄
                    bValidFile = TRUE ;
                    lstrcpy (szFile, szBuffer) ; //复制文件名到szFile
                    GetCurrentDirectory (MAX_PATH + 1, szBuffer) ; //装载进程的当前目录到 szBuffer

 

                    //   ‘//’第一个/为转义字符 第2个才是显示的/
                    //该语句将一个 / 追加在szBuffer后面

                    if (szBuffer [lstrlen (szBuffer) - 1] != '//')
                         lstrcat (szBuffer, TEXT ("//")) ;
                        
                    //将选中的文件绝对路径输出到静态控件上
                    SetWindowText (hwndText, lstrcat (szBuffer, szFile)) ;
               }
               else
               {
                    bValidFile = FALSE ;
                    szBuffer [lstrlen (szBuffer) - 1] = '/0' ;

                         //如果设置该目录不工作,也许这是一个磁盘驱动器,所以试试。
                    if (!SetCurrentDirectory (szBuffer + 1)) //设置当前目录,返回值非零表示成功,零表示失败

                    {  

                         //如果失败,用szBuffer + 2来设置磁盘驱动器
                         szBuffer [3] = ':' ;
                         szBuffer [4] = '/0' ;
                         SetCurrentDirectory (szBuffer + 2) ; 
                    }

 

                    GetCurrentDirectory (MAX_PATH + 1, szBuffer) ;
                    SetWindowText (hwndText, szBuffer) ;
                    //LB_RESETCONTENT清除清单方块中的内容
                    SendMessage (hwndList, LB_RESETCONTENT, 0, 0) ;
                    //文件目录重新写入清单方块
                    SendMessage (hwndList, LB_DIR, DIRATTR,  (LPARAM) TEXT ("*.*")) ;
               }
               InvalidateRect (hwnd, NULL, TRUE) ;
          }
          return 0 ;
         
     case WM_PAINT :
          if (!bValidFile)
               break ;

          if (INVALID_HANDLE_VALUE == (hFile = CreateFile (szFile, GENERIC_READ,
                    FILE_SHARE_READ, NULL, OPEN_EXISTING, 0, NULL)))
          {
               bValidFile = FALSE ;
               break ;
          }
         
          //ReadFile(文件句柄,用于保存读入数据的缓冲区,要读入的字符数,指向实际读取字节数的指针,(没有异步操作)NULL);
          ReadFile (hFile, buffer, MAXREAD, (unsigned long*)&i, NULL) ;
          CloseHandle (hFile) ;

 

          // i 现在等于缓冲区的实际字节数.
          hdc = BeginPaint (hwnd, &ps) ;
          SelectObject (hdc, GetStockObject (SYSTEM_FIXED_FONT)) ;
          SetTextColor (hdc, GetSysColor (COLOR_BTNTEXT)) ;
          SetBkColor   (hdc, GetSysColor (COLOR_BTNFACE)) ;

 

          //用ASCII字符集显示读取到的数据信息
          DrawTextA (hdc, (const char*)buffer, i, &rect, DTFLAGS) ;
         
          EndPaint (hwnd, &ps) ;
          return 0 ;
         
     case WM_DESTROY :
          PostQuitMessage (0) ;
          return 0 ;
     }
     return DefWindowProc (hwnd, message, wParam, lParam) ;
}
    
LRESULT CALLBACK ListProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
        //如果消息是按下回车键,便向父窗口发送清单方块双击的消息
     if (message == WM_KEYDOWN && wParam == VK_RETURN)
          SendMessage (GetParent (hwnd), WM_COMMAND,
         //MAKELONG是一个宏,将两个16位的数联合成一个无符号的32位数。第一个参数是低十六位。
                       MAKELONG (1, LBN_DBLCLK), (LPARAM) hwnd) ;
         
     return CallWindowProc (OldList, hwnd, message, wParam, lParam) ;
}

Windows10搭建ElasticSearch 并配置head 1、安装前提windows下已经安装好了jdk8的版本2、下载ElasticSearchhttps://www.elastic.co/cn/downloads/elasticsearch#ga-release ------下载zip包,将下载的zip文件解压后,直接运行bin下的elasticsearch.bat这个文件,然后访问本机的127.0.0.1:9200,出现以下图说明es安装成功。图一... 阅读详情

相关推荐

Windows环境搭建ElasticSearch 5.*并配置head

前言:ES5*以上版本需要jdk1.8,jdk1.8,jdk1.8.重要的事情说三遍由于这个配置太麻烦了,嫌麻烦的同学可以下载我上传的资源 es_head插件,这个插件只需要将chrome浏览器中的扩展工具界面打开,再把插件拖进去,返回首页点击地址栏后面的这个放大镜小图标即可,下载地址https://download.youkuaiyun.com/download/u012270682/10343470,这个...

保持不满足于简单解释的好奇心,提高戳中问题本质的能力 1万+

DrawText参数介绍

DT_BOTTOM 将正文调整到矩形区域底部,此值必须和DT_SINGLELINE组合使用。 DT_CALCRECT 决定矩形的宽和高。如果正文有多行,DrawText使用lpRect定义的矩形的宽度,并扩展矩形的底部以容纳正文的 最后一行,如果正文只有一行,则DrawText改变矩形的右边界,以容纳下正文的最后一个字符,上述任何一种情况,DrawText返回格式化正文的

ccfxue的博客 4788

Windows下安装ElasticSearch\Head\Kibana

首先windoes下安装ElasticSearch 是非常简单的。只需要在ElasticSearch 官网上将对应的版本下载下来就好,这里主要记录下windows下启动ElasticSearch 遇到的问题. 官网下载地址:Download Elasticsearch | Elastic 下载完成并解压之后,找到自己对应的bin目录(双击elasticSearch.bat启动) 启动时发现一直没有启动成功,遇到的有如下问题: 问题1:received plaintext http traf...

爪哇人的博客 2289

Windows安装启动Head插件

1.下载head插件 :head插件下载地址 2.解压到任意目录,路径不可出现中文 3,安装node js(提取码:1e3z):网盘地址 4,安装cnpm(国内服务器,提高以后拉取效率) npm install ‐g cnpm ‐‐registry=https://registry.npm.taobao.org 5,将grunt安装为全局命令 npm install -g grunt-cli ...

weixin_42293359的博客 1120

ElasticSearch可视化工具head在windows下的安装

很多公司都是用的ES来实现搜索服务,在开发过程中,有时会需要查看ES里的数据。使用可视化插件的话,会更方便我们查看ES里的数据。这里总结一下head插件的安装和使用。 首先需要下载elasticsearch-head,https://github.com/mobz/elasticsearch-head,访问这个git,然后在本地找个文件夹clone下来。但是此时是不能直接使用elasticsea...

u010802778的博客 2046

Windows下ElasticSearch的Head安装及基本使用

Elasticsearch 7.x 安装步骤 1.安装 Elasticsearch 7.2.1 1.1 下载Elasticsearch 下载地址:https://www.elastic.co/cn/downloads/elasticsearch 1.2 下载安装包后解压 Elasticsearch 7.2.1 目录结构如下: bin :脚本文件,包括 ES 启动 & 安装插件等等 ...

ren421259121的博客 1051

VC++设置字体 字幕变色功能的实现 DrawText函数 本章小结

目录 设置字体 字幕变色功能的实现 DrawText函数 本章小结 接上:VC++字符输入 ASCII码 接下: 设置字体 MFC提供了一个CFont类专门用来设置字体。这个类派生于CGdiObject类,封装了一个Windows图形设备接口(GDI)的字体。在实际编程时,在构造了一个CFont对象后,还必须利用该类提供的几个初始化函数之一对该对象进行初始化,然后才能使用这个对象。CFont类提供的初始化函数有: ■ CreateFont ■ CreateFontIndirect ■

当路danglu0010 3436

第10篇:Mac/Windows安装ElasticSearch可视化Head插件

目前国内有大量的公司都在使用 Elasticsearch,包括阿里、京东、滴滴、今日头条、小米、vivo等诸多知名公司。除了搜索功能之外,Elasticsearch还结合Kibana、Logstash、Elastic Stack还被广泛运用在大数据近实时分析领域,包括日志分析、指标监控等多个领域。Mac Windows 如何安装ElasticSearch可视化Head插件,来更加便捷的对ES进行管理。

老王随聊 4862

head命令——显示文件开头的内容

head命令——显示文件开头的内容

u013007181的博客 2465

windows的cmd命令集合

cmd命令集,方便查阅,有简单的说明,很好理解和运用。

精彩编程与编程技巧-往列表框中填入文件目录信息...

精彩编程与编程技巧-往列表框中填入文件目录信息 ...

windows程序设计范例分析【HEAD】

<br /> <br />  此文非原创,仅为了方便大家学习<br />  /*--------------------------------------------- HEAD.C -- Displays beginning (head) of file (c) Charles Petzold, 1998 ---------------------------------------------*/ #include <windows.h> #def

juzzs001的专栏 687

智能车竞赛独轮组信标灯系统全解析:从硬件选型到实战调试

本文全面解析了智能车竞赛独轮组信标灯系统的核心原理与实战应用。从硬件架构(灯板、灯罩、控制器)的深度剖析,到红外信号(特别是40kHz调制信号)的接收与解码策略,再到车模的灭灯机构设计与路径规划,提供了从硬件选型到软件调试的全链路指南。文章重点分享了实战调试技巧与常见问题排查方法,旨在帮助参赛队伍深入理解系统,提升车模的识别精度与比赛表现。

e4f5g6h的博客 1124

windows下Elasticsearch安装、ElasticSearch-head插件安装使用

Elasticsearch的介绍 Elasticsearch是一个基于Lucene库的搜索引擎。它提供了一个分布式、支持多租户的全文搜索引擎,具有HTTP Web接口和无模式JSON文档。 Elasticsearch具有以下特点: 分布式,无需人工搭建集群(solr就需要人为配置,使用Zookeeper作为注册中心) Restful风格,一切API都遵循Rest原则,容易上手近实时搜索,数据更新在Elasticsearch中几乎是完全同步的。 开源的全文检索技术(Solr、Elasticsearch等)

Java小皮孩 7055

AUTOSAR MCAL开发及EB Tresos工具使用总结

在基于AutoSar CP架构开发MCAL时,会使用到EB tresos工具。本文主要对MCAL开发及EB tresos工具使用进行总结,仅作为自学使用,以方便后续查漏补缺。

liuxu324的博客 2625

基于深度学习的树木种类识别

本文介绍了基于深度学习的树木种类识别技术。我们将通过深度学习模型和图像处理技术实现对树木的自动识别与分类。首先,我们将介绍深度学习的基本原理和相关算法。接着,我们将详细说明树木种类识别的数据准备、模型构建和训练过程。最后,我们将给出代码示例,帮助读者深入了解和实践该技术。

一键难忘的博客 2315

elasticsearch windows 安装head插件

elasticsearch windows安装很简单,官网下载安装包,解压,启动即可,默认端口9200,但没有head插件还是很不方便,安装head插件需要先安装node.js,然后下载elasticsearch的head插件,修改配置完成安装1、下载node.js最新版,安装,我的安装路径D:\Program Files\nodejs输入node -v,查看node.js是否安装成功2、安装gr...

zhang_zining的专栏 2883

华为OD机试真题 Java&Go 实现【优雅子数组】【100%通过率】【2022.11 Q4 新题】

如果一个数组中出现次数最多的元素出现大于等于K次,被称为K -优雅数组,k也可以被称为优雅阈值。例如,数组1,2,3,1、2,3,1,它是一个3-优雅数组,因为元素1出现次数大于等于3次,数组1,2,3,1,2就不是一个3-优雅数组,因为其中出现次数最多的元素是1和2,只出现了2次。给定一个数组A和k,请求出A有多少子数组是k-优雅子数组。

MISAYAONE的博客 1万+

【ES】windows下安装ElasticSearch的Head插件

ElasticSearch官方的模拟工具是控制台的curl,不是很直观,可以在chrome浏览器中安装head插件来作为请求的工具:head插件 上节已经阐述了curl的一些基本操作 详情可以点击查看: 1: windows环境中如何安装配置curl工具 2: CURL在windows中对ElasticSearch的一些简单的操作 ES5以上的版本安装head需要安装node和gru...

一起记录GIS学习 1333

【K8S系列】Kubernetes 中 Service 的流量不均匀问题【已解决】

在 Kubernetes 中,Service 是一种抽象,用于定义一组 Pod 的访问策略。当某些 Pod 接收的流量过多,而其他 Pod 的流量较少时,可能会导致负载不均衡。这种情况不仅影响性能,还可能导致某些 Pod 过载,影响应用的可用性。本文将详细分析此问题的原因及其解决方案。

颜淡慕潇 8737

手把手实现3D肺结节检测:基于Faster R-CNN的从CT处理、训练到部署的五步代码级实战与避坑指南

亲爱的同学,当你能完整实现“3D Faster R-CNN肺部结节检测系统”,你会发现医学影像AI的毕设课题充满挑战与成就感。我们围绕3D Faster R-CNN模型,从数据处理、模型搭建到实验验证,一步步带你打造一个能精准检测肺部结节的智能系统,让你的毕设既体现技术深度,又能为肺部疾病早期诊断贡献实用价值。是专为3D医学影像设计的目标检测模型,能在三维CT数据中自动定位、识别肺部结节——这一课题兼具“临床价值”和“技术挑战性”,是毕设的优质选择,能充分展现你的工程能力和科研敏感度。

LXY_LOVE36的博客 306

windows 下 安装es head插件教程

ES安装成功后,是6.3.0的版本,装head插件时,发现好多教程都不适用,终于找到一篇可以适用的,特此记录下来。原文地址:https://blog.youkuaiyun.com/qq3401247010/article/details/78742524 ES6.0版本安装head插件 1.1 前言   不知道是我电脑问题还是最近的开源软件都比较**,mysql和elasticsearch新版本变动都比较大。elasticsearch6.0貌似已经不支持命令行安装head插件了,反正我是折...

qq_36862125的博客 1640

STM32H743的FDCAN使用方法(1):STM32CubeMX初始化代码生成

STM32H743的FDCAN使用方法(1):STM32CubeMX初始化代码生成。

kevin1499的博客 2565

windows安装ElasticSearch+Head

1、java环境的配置 安装jdk1.8版本及以上。 2、配置ElasticSearch (1)首先到 https://www.elastic.co/cn/downloads/elasticsearch 下载es ,因为是windows下搭建系统,所以选择zip下载。我下载的版本是7.6.0 (2)将下载的zip解压到某个目录下,存放es系统的源码,例:D:\tools\elasticsear...

csdn2100的博客 483

Serial RapidIO Gen2 IP 说明(一)

概述 高速IO(RapidIO)互联架构,用来兼容当前最流行的集成通信处理器、主处理器、联网的数字信号处理器,是一种高性能、分组交换(报文交换)的互联技术。它解决了高性能嵌入式产业稳定性、高带宽以及系统内部更快的总线速率的需求。 高速IO(RapidIO)标准由三层定义:逻辑层、传输层、物理层。逻辑层定义了所有的协议内容和报文格式。这些是终端发起和完成一次传输所必需的信息。传输层提供了报文从一个端点传输到另外一个端点必要的路线信息。物理层则描述了设备级的端口声明,如报...

记录所学,分享知识,结识挚友 1497

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

上一篇: windows程序设计 之 「CLOCK」范例分析笔记
下一篇: 窗口风格 与 窗口类风格
TypeCool
博客等级 码龄22年 58粉丝 93原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值