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

5分钟搞定Conflux钱包注册:Fluent钱包从安装到转账全流程指南

本文提供Conflux公链上Fluent钱包的完整注册和使用指南,涵盖从安装、助记词备份到CFX转账的全流程。特别强调安全操作要点,包括助记词保管和网络选择,帮助用户5分钟内快速掌握这款国产公链钱包的核心功能,确保数字资产安全。

weixin_29181861的博客 244

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

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

Java小皮孩 7055

Ubuntu22.04+Docker一键部署Autoware Universe避坑指南(附鱼香ROS配置)

本文详细介绍了在Ubuntu22.04系统中使用Docker一键部署Autoware Universe的完整流程,包括鱼香ROS工具链配置、Docker环境优化及VSCode开发环境集成。通过实战指南帮助开发者快速搭建自动驾驶开发环境,解决常见部署问题,提升开发效率。

weixin_29254673的博客 413

本地部署gradle

在部署CAS构建执行包时,如果按照CAS的官方命令gradlew clean build,如果系统没安装过gradle,这个步骤将会从网上下载gradle,但是进度非常慢,耗时很长。为了更快地完成项目构建,我们可以直接在本地部署好gradle,节省一点时间。

益添的博客 779

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

GAN网络详解析

介绍目前常见的GAN网络,以及GAN网络的基本组成

wm199的博客 6504

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

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

一起记录GIS学习 1333

数据库小技能:数据导入脚本

背景:版本大升级,从2.0升级到3.0 ,服务端开发语言从c#换到java语言。数据库类型从microsalft sql server 换到mysql。数据来源于微信,用于查询卡bin。

专注于计算机研发知识和资讯分享 773

2025华为杯第二十二届中国研究生数学建模竞赛D题:低空湍流监测及最优航路规划 - 完整解题分析+完整MATLAB源码!(上篇)

🎓 本文收录于 《滚雪球学数学建模》专栏,本专栏专注于从零基础出发,带你循序渐进掌握数学建模的核心方法与思维路径。通过“滚雪球式”学习法,从最简单的生活化案例到经典建模工具,再到省赛、国赛真题实战演练,逐步积累知识与技能,帮助你搭建完整的建模体系。无论你是刚接触建模的新生,还是希望提升科研与竞赛能力的学者与工程师,本专栏都将为你提供一条清晰、高效、可实操的建模成长路线,助力你快速进阶,突破难点,迈向数学建模竞赛与实际应用的更高峰 🚀!

**My Coding Family** 2584

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

传导案例:某医疗仪器传导骚扰整改案例

紫外线光疗仪是一种专业的医疗设备,主要用于治疗银屑病、白癜风等皮肤疾病。该设备采用物理治疗技术,通过特定波长的紫外线照射人体来达到治疗效果。自1984年窄谱中波紫外线(NB-UVB)应用于临床以来,该技术已成为治疗早期蕈样肉芽肿(MF)的有效方法之一。作为二类医疗器械,紫外线光疗仪必须符合严格的电磁兼容性(EMC)标准,这不仅关系到设备自身的稳定运行,更关乎患者的使用安全和治疗效果。紫外线光疗仪传导骚扰整改案例充分展示了系统性EMC设计的重要性。

m0_56451176的博客 340

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

把静态前端托管进 SAP BTP:HTML5 Application Deployer 与企业级内容部署全攻略

本文介绍了在SAP BTP Cloud Foundry环境中使用HTML5 Application Repository托管前端静态资源的工程化实践。通过HTML5 Application Deployer工具,结合MTA描述、路由配置和服务实例,实现前后端解耦和标准化部署。文章详细阐述了目录结构、关键配置文件、MTA编排以及构建部署流程,并针对大体积前端资源提供了GACD和异步上传两种解决方案。最后说明了如何与AppRouter协同工作,使部署内容可供终端用户访问。这套方法使前端更新无需重启后端,支持团队

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 154

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

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

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值