windows api学习笔记-简单的记事本
#include <windows.h>
#include "resource.h"
#include <string>LRESULT CALLBACK MainWndProc(HWND,UINT,WPARAM,LPARAM);//窗口函数的函数原型int APIENTRY WinMain( //APIENTRY是__stdcall的宏定义HINSTANCE hInstance, //本模块的实例句柄HINSTANCE hPrevInstance, //Win16留下的废物LPSTR lpCmdLine, //命令行参数int nCmdShow //主窗口初始化时的现实形式)
{char szClassName[] = "MainClass";WNDCLASSEX wndclass; //用来描述主窗口的结构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 = (LPSTR)IDR_MENU1;//指定菜单,菜单在头文件中已经定义了wndclass.lpszClassName = szClassName;//窗口类的名称wndclass.hIconSm = NULL;//没有类的小图标::RegisterClassEx(&wndclass);//注册这个窗口类HWND hwnd = ::CreateWindowEx(0,//扩展样式szClassName,//类名"My First Window",//窗口名。标题WS_OVERLAPPEDWINDOW,//窗口风格CW_USEDEFAULT,//初始X坐标CW_USEDEFAULT,//初始Y坐标CW_USEDEFAULT,//宽度CW_USEDEFAULT,//高度NULL,//父窗口句柄NULL,//菜单句柄hInstance,//实例句柄NULL//用户数据);if(hwnd == NULL){::MessageBox(NULL,"创建窗口出错","系统提示",MB_OK);}::ShowWindow(hwnd,nCmdShow);//显示窗口::UpdateWindow(hwnd);//刷新窗口MSG msg;while(::GetMessage(&msg,NULL,0,0)){::TranslateMessage(&msg);//转换为键盘消息::DispatchMessage(&msg);//将消息发送到相应的窗口函数}return msg.wParam;//当GetMessage返回FALSE时程序结束
}LRESULT CALLBACK MainWndProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam)
{static std::string str;switch(message){case WM_CREATE:{::SetWindowText(hwnd,"打字程序");return 0;}case WM_CHAR:{str = str+char(wParam);::InvalidateRect(hwnd,NULL,0);//使整个客户区无效,迫使系统再次发送WM_PAINT消息return 0;}case WM_PAINT:{HDC hdc;PAINTSTRUCT ps;hdc = ::BeginPaint(hwnd,&ps);//使无效的客户区变的有效,并取得设备环境句柄::TextOut(hdc,0,0,str.c_str(),str.length());//输出文本::EndPaint(hwnd,&ps);return 0;}case WM_DESTROY:{::PostQuitMessage(0);//向消息队列投递一个WM_QUIT消息,促使GET MESSAGE函数返回0,结束消息循环return 0;}case WM_COMMAND:{switch(LOWORD(wParam)){case ID_FILE_EXIT:::SendMessage(hwnd,WM_CLOSE,0,0);break;}return 0;}}return ::DefWindowProc(hwnd,message,wParam,lParam);
}
resource.h的代码为
//{{NO_DEPENDENCIES}}
// Microsoft Visual C++ generated include file.
// Used by a.rc
//
#define IDR_MENU1 101
#define ID_FILE_EXIT 40001// Next default values for new objects
//
#ifdef APSTUDIO_INVOKED
#ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_NEXT_RESOURCE_VALUE 102
#define _APS_NEXT_COMMAND_VALUE 40002
#define _APS_NEXT_CONTROL_VALUE 1001
#define _APS_NEXT_SYMED_VALUE 101
#endif
#endif
转载于:https://www.cnblogs.com/liulun/archive/2010/02/23/1671948.html
windows api学习笔记-简单的记事本相关推荐
- windows api学习笔记-键盘钩子
DLL项目的头文件 #ifdef KEYHOOKLIB_EXPORT //此宏将在CPP文件中定义 #define KEYHOOKLIB_API __declspec(dllexport) #else ...
- Windows系统调用学习笔记(一)—— API函数调用过程
Windows系统调用学习笔记(一)-- API函数调用过程 Windows API 实验1:分析ReadProcessMemory 第一步:定位函数 第二步:开始分析 总结 实验2:分析NtRead ...
- Windows APC学习笔记(一)—— APC的本质备用APC队列
Windows APC学习笔记(一)-- APC的本质&备用APC队列 基础知识 APC的本质 APC队列 APC结构 分析 KiServiceExit 总结 备用APC队列 挂靠环境下Apc ...
- Crypto API 学习笔记一
标 题: [原创]Crypto API 学习笔记一 作 者: jdxyw 时 间: 2006-09-01,16:47 链 接: http://bbs.pediy.com/showthread.php? ...
- php shellcode,Windows Shellcode学习笔记
0x00 前言 Windows Shellcode学习笔记--通过VisualStudio生成shellcode,shellcode是一段机器码,常用作漏洞利用中的载荷(也就是payload). 在渗 ...
- Windows异常学习笔记(二)—— 内核异常处理流程用户异常的分发
Windows异常学习笔记(二)-- 内核异常处理流程&用户异常分发 用户层与内核层异常 内核异常 分析 KiDispatchException 分析 RtlDispatchException ...
- Windows APC学习笔记(二)—— 挂入过程执行过程
Windows APC学习笔记(二)-- 挂入过程&执行过程 基础知识 挂入过程 KeInitializeApc ApcStateIndex KiInsertQueueApc Alertabl ...
- Windows系统调用学习笔记(四)—— 系统服务表SSDT
Windows系统调用学习笔记(四)-- 系统服务表&SSDT 要点回顾 系统服务表 实验:分析 KiSystemService 与 KiFastCallEntry 共同代码 SSDT 实验: ...
- Windows系统调用学习笔记(三)—— 保存现场
Windows系统调用学习笔记(三)-- 保存现场 要点回顾 基本概念 Trap Frame 结构 线程相关的结构体 ETHREAD KTHREAD CPU相关的结构体 KPCR _NT_TIB KP ...
最新文章
- 22 款神经网络的设计和可视化工具
- easyui是否容易上手_特色家常菜-清蒸桂鱼,肉质鲜嫩有营养,做法简单容易学...
- GitLab - Ubuntu18搭建GitLab仓库服务器(转)
- 如何在linux里面运行ncl,NCL基础讲解(二)——NCL安装与运行
- STM32F7xx —— 内部flash
- subline修改字体大小和空格问题
- win下常用快捷鍵及其作用
- php如何使用网关,在某种情况下,由于PHP代码,网关已关闭(Gateway is down because of PHP code in one situation)...
- 笔记本安装linux
- php图片发送另一台,PHP从一台服务器将图片发送到另一台服务器并保存
- 分组 php库,纯真ip数据库查询的php实现(补充分组查询)
- 蓝牙耳机买哪种?不错的蓝牙耳机推荐
- 有道词典与奇迹背单词生词本同步
- 数字信号处理经典书籍
- 直流电机调速仿真作业
- 基于Android的医院挂号系统设计与实现(MySQL+Spring Boot+MyBatis+Android Studio+IDEA)
- 计算机所选区域单元格数值,筛选Excel2007单元格区域或表中的数据
- 如何从iTunes Store赠送音乐,电影等
- matlab滤波有几种形式,几种经典常用的滤波算法
- 高德地图JavaScript根据后台坐标点绘制轨迹
热门文章
- activiti 流程文件存哪里_JAVA-工作流引擎-activiti-Tasks介绍
- vue hot true 不起作用_Vue + Flask 小知识(二)
- 全文搜索引擎有哪些?_你想要拥有自己的搜索引擎吗?
- css 旋转 animation动画
- JavaScript 、if else语句判断 、jQurey表单事件
- idea控制台中文乱码问题
- linux expect sftp,expect实现sftp文件同步
- python进入高考-Python已进入小学教材将加入高考
- 正则翻译工具_PythonBasics 中文系列教程 · 翻译完成
- linux查看和编辑文件,查看和编辑文件(Linux的快捷键和主要命令)