动手写window程序

自己动手写一个简单的Windows shell扩展程序 阅读详情

主要过程
1.设计窗口类
2.创建窗口
3.显示刷新窗口
4.消息循环处理(外部定义了消息过程)

#include <Windows.h>
#include <stdio.h>
#include "resource.h"

//声明消息过程
LRESULT CALLBACK WinSunProc(
    HWND hwnd,
    UINT uMsg,
    WPARAM wParam,
    LPARAM lParam
);

int WINAPI WinMain( 
    HINSTANCE hInstance, // 我是谁
    HINSTANCE hPrevInstance,//谁生的我
    LPSTR lpCmdLine, //命令行参数
    int nShowCmd  //显示状态
    )
    {
        //设计一个窗口类;
        WNDCLASS wndcls;
        wndcls.cbClsExtra = 0;
        wndcls.cbWndExtra = 0;//附加内存空间,一般为0
        //GetStockObject 获取已经预定义的窗口标识
        wndcls.hbrBackground =(HBRUSH) GetStockObject(BLACK_BRUSH);
        //LoadCursor 返回值
        wndcls.hCursor = LoadCursor(NULL,IDC_CROSS );
        wndcls.hIcon = LoadIcon(hInstance,MAKEINTRESOURCE(IDI_ICON2));//设置窗口的图标
        wndcls.hInstance = hInstance;  //所在的程序id是谁,即我自己
        wndcls.lpfnWndProc = WinSunProc; //窗口过程函数  类型为 WNDPROC
        wndcls.lpszClassName = "hzz";//注册窗口类的名称,CreateWindow时要通过类名来找到该类
        wndcls.lpszMenuName = MAKEINTRESOURCE(IDR_MENU1); //通过id转换成lpcstr
        wndcls.style = CS_HREDRAW | CS_VREDRAW; //窗口样式
        RegisterClass(&wndcls);

        //创建窗口
        HWND hwnd;
        hwnd = CreateWindow(
            "hzz",
            "hzz_window",
            WS_OVERLAPPEDWINDOW,//
            0,
            0,
            600,
            400,
            NULL,
            NULL,
            hInstance,
            NULL
            );
        if (!hwnd)
        {
            int x = GetLastError();//通过此方式获取创建窗口失败的原因
            int y=0;
        }

        //显示刷新窗口
        ShowWindow(hwnd,SW_SHOWNORMAL);
        UpdateWindow(hwnd);

        //定义消息结构体,开始循环
        MSG msg;
        //GetMessage()从窗口对应的窗口队列中获取该窗口的消息
        //hwnd 指接受所属窗口的消息,如果NULL则指线程所属窗口的消息
        //后边两个参数分别表示 接受的消息最小值和最大值
        while (GetMessage(&msg,NULL,0,0))
        {
            //将虚拟键消息转换为字符消息。字符消息被送到调用线程的消息队列中,在下一次线程调用函数GetMessage或PeekMessage时被读出。
            TranslateMessage(&msg);//
            //该函数调度一个消息给窗口程序。通常调度从GetMessage取得的消息。消息被调度到的窗口程序即是WinSunProc()函数。
            DispatchMessage(&msg);
        }
        return msg.wParam;
    }

LRESULT CALLBACK WinSunProc( 
    HWND hwnd, 
    UINT uMsg, 
    WPARAM wParam, 
    LPARAM lParam 
)
{
    switch(uMsg)
    {
    case WM_CHAR:
        char ch[20];
        sprintf_s(ch,"char code is %d",wParam);
        MessageBox(hwnd,ch,"char",0);
        break;
    case WM_LBUTTONDOWN:
        MessageBox(hwnd,"mouse clicked","caption",0);
        HDC hdc;
        hdc = GetDC(hwnd);
        TextOut(hdc,0,50,"HAH",strlen("HAH"));
        //ReleaseDC(hwnd,hdc);
        break;
    case WM_PAINT:

        PAINTSTRUCT ps;
        hdc = BeginPaint(hwnd,&ps);

        LPWSTR *szArgList;
        int argCount;
        szArgList = CommandLineToArgvW(GetCommandLineW(),&argCount);
        if (!szArgList)
        {
            MessageBox(NULL,"unable to parse command line","Error",MB_OK);
            return  -1;
        }
        for (int i = 0;i<argCount;i++)
        {
            //MessageBoxW(NULL,szArgList[i],L"haha",MB_OK);
        }

        //TextOut(hdc,0,0,"paint",strlen("paint"));
        EndPaint(hwnd,&ps);
        break;
    case WM_DESTROY:
        PostQuitMessage(0);
        break;
    default:
        return ::DefWindowProc(hwnd,uMsg,wParam,lParam);
    }
    return 0;
}
TCP/IP 动手实践1-windows驱动开发入门                                             TCP/IP 动手实践1-windows驱动开发入门配套代码 从此下载:http://download.youkuaiyun.com/source/2390156开篇序言: 如果你是一名热衷于计算机技术的程序员,看到此题,你一定会想起一本大名鼎鼎的技术秘籍,即余渊的《自己 阅读详情

相关推荐

PE学习.动手写PE.见缝插针

来自:http://bbs.pediy.com/showthread.php?t=138356 此贴用于申请邀请码! 1.PE文件基本结构图 接下来,让我们动手吧! 首先,让我们来明确下目的: 1.构建自己的pe程序,知道了pe文件的结构后,我们就可以按照p

kisbuddy 1411

用HTML开发Windows桌面应用程序

转载自:http://blog.youkuaiyun.com/xiaoaiai/article/details/46043077  如果要说明这个题目上的问题,就先要说一下,软件开发的种种方式,从最初的命令行软件开发方式,到可视化的窗口软件,开发方式的进步使得开发难度降低,用户体验也越来越完善,不过今天要谈的是windows下的桌面软件开发方式,关于windows下桌面软件的开发方式,请看下面:

ytlcainiao的专栏 2万+

在Windows上编写应用程序

在Visual Studio Code或其他编辑器中,您可以使用相应的命令行工具来构建和运行应用程序。在Visual Studio Code或其他编辑器中,您可以使用相应的命令行工具来构建和运行应用程序。在Visual Studio中,您可以使用调试器来逐步执行代码、查看变量的值以及跟踪代码的执行流程。在Visual Studio中,您可以使用调试器来逐步执行代码、查看变量的值以及跟踪代码的执行流程。开发工具通常提供了强大的调试功能,可以帮助您找出应用程序中的错误和问题。4.构建和运行应用程序。

DevSavantX的博客 669

编写第一个WINDOWS程序

书籍:《windows程序设计(第五版)》的开始->编写第一个程序环境:visual studio 2022内容:编写第一个程序。

felicity_one的博客 1073

数字电路复位信号设计(异步复位、同步释放)笔记详解

复位信号设计(异步复位、同步释放)笔记详解 1 时序设计 1.1 复位信号设计(异步复位、同步释放) 1.1.0 复位恢复时间和清除时间 首先解释一下恢复时间(recovery time)和清除时间(removal time):(以复位信号低电平有效为例) 复位恢复时间(recovery time):撤销复位时,复位信号无效到时钟有效沿来临之间需要维持的最小的时间,类似于同步时钟的建立时间setup time; 复位清除时间(removal time):复位时,在时钟有效沿来临之后复位信号还需要保持复位

weixin_42294124的博客 1万+

uniapp实战:mui-player插件如何完美适配m3u8/flv直播流(附完整代码)

本文详细介绍了如何在Uniapp中使用mui-player插件完美适配m3u8和flv直播流,提供从基础配置到高级优化的全流程解决方案。通过动态加载策略、响应式布局和内存管理,实现跨平台稳定播放,适用于企业级直播应用开发。

weixin_29001655的博客 236

如何创建一个Windows软件

如何创建一个Windows软件

Tim_Cookerr的博客 7126

设计空间探索:乘法器设计的面积、延时、功耗优化

4-2压缩器在减少延迟方面表现出色,适用于需要快速压缩的场景。6-2压缩器在资源占用方面具有优势,能够减少压缩树的层次数量和逻辑门数量。优化功耗:通过合理组合不同类型的压缩器,可以在延迟、资源占用和功耗之间找到最佳平衡点,从而实现优化的设计目标。###参考资料。

SiArch的博客 1880

如何编写windows服务程序

如何编写windows服务程序 By:张鹏/Hikvision 这两天想学习关于如何编写windows服务程序的知识,就上网查了些资料。看了一篇文章《用C 语言编写Windows 服务程序的五个步骤》。但可能由于译者的疏忽,忘记了将关键代码放入该文档,导致初学者可能会看不懂。所以又查阅了相关资料。自己完成了《用C 语言编写Windows 服务程序的五个步骤》中的样例程序。 在本文中我希望能给

我是榜样的博客 1万+

FFT中的精度博弈:定点数缩放、块浮点与溢出处理在Vivado IP核中的实践权衡

本文探讨了在Vivado FFT IP核中实现高精度快速傅里叶变换的关键技术,包括定点数缩放策略、块浮点模式及溢出处理机制。通过分析不同精度控制方案的资源开销与性能权衡,为工程师在医疗成像、雷达信号处理等高动态范围应用中优化FFT实现提供实践指导。

melon的博客 1097

ur3手眼标定+realsenseL515

知乎 csdn

AI_future的博客 978

自己动手写贪吃蛇AI——附源码和程序

从第一次构想写贪吃蛇AI,到现在两个学期才落实下来。其实之前用手机C4droid控制台写过一次,不是很理想,这次把这个坑填了吧,非要问有什么意义的话,自娱自乐罢了。

柯西丶不是你的博客 5906

FreeCAD MCP实战:用AI自然语言驱动CAD建模与自动化

在计算机辅助设计(CAD)领域,参数化建模和自动化脚本是提升设计效率的核心技术。其原理在于通过程序化指令控制三维模型的创建与修改,从而将设计意图转化为精确的几何实体。这种技术价值在于显著降低重复性操作成本,实现快速原型迭代和设计探索。在应用场景上,它尤其适用于需要频繁调整尺寸、生成系列化零件或执行规则化建模任务的工程与产品设计。本文聚焦的FreeCAD MCP项目,正是这一理念的先进实践。它通过集成Model Context Protocol(MCP),构建了一个连接Claude AI与FreeCAD的智能

weixin_26913055的博客 725

window程序

#include <windows.h>LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam);char windowName[]="window窗口"; //窗口标题int APIENTRY WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow){ //定义窗口类 WNDC

qq_43656826的博客 1137

Android流畅度优化实战:从掉帧定位到布局与渲染调优

在移动应用开发中,性能优化是决定用户体验与留存率的关键环节,其中Android流畅度优化更是核心命题。用户感知的“卡顿”往往并非持续低帧率,而是由于掉帧率波动引发的偶发不流畅。本文从性能优化理论出发,系统讲解如何使用Systrace、CPU Profiler等工具定位掉帧瓶颈,深入分析布局层级过深、过度绘制、对象分配与GC压力等常见诱因。同时结合冷启动耗时、列表滚动掉帧、Bitmap加载等真实工程案例,阐述从应用层到系统层的分级优化策略,并给出低端机适配、异步化改造及线上监控体系搭建的实践方案。内容覆盖布局

weixin_29185493的博客 201

wsl --install 不执行,显示帮助信息

在安装使用wsl的时候碰到了wsl --install 不执行,而显示帮助信息,提供了解决方案。

水滴爬呀爬 2773

自己动手写打印机监控程序

自己动手写打印机监控程序 2010-10-27 22:25:27  标签:打印机 监控 Enumjobs 打印日志    [推送到技术圈] 版权声明:原创作品,如需转载,请与作者联系。否则将追究法律责任。 一、需求 由于公司打印纸张浪费比较严重,领导要求对所有的打印进行记录。对比了几款商业软件有的功能比较强大...

weixin_34227447的博客 1451

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

windows编程之自己动手写WinMain函数

这是我参考msdn和书本自己写的窗口程序, WinMain函数式所有windows应用程序的入口,类似C语言里的main函数,其功能是:完成一系列的定义及初始化工作,并产生消息循环。消息循环是整个程序运行的核心 。 WinMain函数主要实现以下功能: 1.注册窗口类,建立窗口,执行其他必要的初始化的操作; 2.进入消息循环,根据从应用程序消息队列接受的消息,调用相应的处理过程; 3.当

u010084308的专栏 4196

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

1.5动手第一个Window程序

#include<windows.h> #include<stdio.h> LRESULT CALLBACK WinSunProc( HWND hwnd, // handle to window UINT uMsg, // message identifier WPARAM wParam, // first message param...

qq_42148307的博客 161

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

自己动手用python写豆瓣FM

以前装过几次ubuntu,但总是因为缺少一些软件工具而最终不得不回到windows下。最近又迷上了ubuntu,逐渐从windows系统转战ubuntu。这次,openfetion、wineqq、chrome,还有wps等软件为这次过度打下了坚实的基础。希望能够成为一个忠实的linux开源爱好者。闲话扯多了,转入正题。 先上代码:(Douban.py) # -*- coding=utf-8 -

shawpan的专栏 1574

《动手学Flink》——Window

Windows是处理无限流的核心。Windows将流分成有限大小的“存储桶” 窗口式Flink程序的一般结构如下所示。第一个片段是指键控流,而第二个片段是指非键控流。可以看到,唯一的区别是对键控流的keyBy(…)调用和对非键控流的window(…)变为windowAll(…)。这还将用作本页面其余部分的路线图。 在上面,方括号([…])中的命令是可选的。这表明Flink允许您以多种不同方式自定义窗口逻辑,从而使其最适合您的需求。 Window 类型 Window 类型可以分成两类: CountWind

HadwinLing 346

自己动手编写 Windows 防止锁屏脚本程序

背景介绍 有些公司处于安全和保密工作考虑,会通过 Windows 组策略强制所有办公电脑在无操作的情况下 5 分钟或者 10 分钟自动锁屏,避免无关人士看到不该看的内容。作为程序员,十分反感这种一刀切的方案,一来很容易打断思路,比如正在写代码或者向别人展示时,突然锁屏了就挺恶心的;二来每次锁屏后都要输入密码,这简直就是浪费生命,不能忍! 为了解决这个问题,我们可以编写一个简单的 vbs 脚本,在锁屏周期内模拟按键操作,从而避免 Windows 桌面被锁屏。之所以使用 vbs 脚本,而不是 Python、Ja

程序员「阿基米东」的编程之旅 1万+

一、Window程序运行的内部机制

文章目录1、API与SDK2、窗口与句柄3、消息与消息队列3.1 消息3.2 消息队列3.3 进队消息和不进队消息4、WinMain函数4.1 WinMain函数的定义4.2 窗口的创建4.2.1 设计一个窗口类4.2.2 注册窗口类4.2.3 创建窗口4.2.4 显示及更新窗口4.3 消息循环4.4 编写窗口过程函数5、动手写第一个Windows程序6、小结 1、API与SDK API Windows操作系统提供了各种各样的函数,以方便我们开发Windows应用程序。这些函数是Windows操作系统

weixin_43488529的博客 1596

动手写第二个Windows应用程序

/*---------------------------------------------------- SYSMETS1.C -- System Metrics Display Program No. 1 (c) Charles Petzold, 1998 -------------------------------------------...

diao21的博客 117
上一篇: 无法从char数组 转向LPCTCHAR
下一篇: itoa 函数
writeeee
博客等级 码龄18年 35粉丝 76原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值