win32记事本程序(一)
我不会取标题,大体上我想用win32,模仿windows的记事本,写个记事本程序,最后让我的程序和微软的程序在外观和功能上都差不多。这样一来我可以学到一些新知识,巩固旧的知识。
一、首先做个菜单栏吧。建个menu.rc文件,参照微软的记事本,里面写上这些:
//menu.rc #define IDM_MAIN 0x2000
#define IDM_NEW 0x4101
#define IDM_OPEN 0x4102
#define IDM_SAVE 0x4103
#define IDM_SAVEAS 0x4104
#define IDM_SETTING 0x4105
#define IDM_PRINT 0x4106
#define IDM_EXIT 0x4107 #define IDM_DUDO 0x4201
#define IDM_CUTE 0x4202
#define IDM_COPY 0x4203
#define IDM_PASTE 0x4204
#define IDM_DELETE 0x4205
#define IDM_FINDE 0x4206
#define IDM_FINDENEXT 0x4207
#define IDM_REPLACE 0x4208
#define IDM_GOTO 0x4209
#define IDM_SELETEALL 0x4210
#define IDM_DATE 0x4211 #define IDM_WORDWRAP 0x4301
#define IDM_FONT 0x4302 #define IDM_STATUS 0x4401 #define IDM_HELP 0x4501
#define IDM_ABOUT 0x4502 IDM_MAIN menu discardable
BEGIN
popup "文件(&F)"
BEGIN
menuitem "新建(&N)", IDM_NEW
menuitem "打开文件(&O)", IDM_OPEN
menuitem "保存(&S)", IDM_SAVE
menuitem "另存为(&A)", IDM_SAVEAS
menuitem separator
menuitem "页面设置(&U)", IDM_SETTING
menuitem "打印(&P)", IDM_PRINT
menuitem separator
menuitem "退出(&E)", IDM_EXIT
END
popup "编辑(&E)"
BEGIN
menuitem "撤销(&U)", IDM_DUDO GRAYED
menuitem separator
menuitem "剪切(&T)", IDM_CUTE GRAYED
menuitem "复制(&C)", IDM_COPY GRAYED
menuitem "粘贴(&P)", IDM_PASTE
menuitem "删除(&L)", IDM_DELETE GRAYED
menuitem separator
menuitem "查找(&F)", IDM_FINDE GRAYED
menuitem "查找下一个(&N)",IDM_FINDENEXT GRAYED
menuitem "替换(&R)", IDM_REPLACE
menuitem "转到(&G)", IDM_GOTO GRAYED
menuitem separator
menuitem "全选(&A)", IDM_SELETEALL
menuitem "时间日期(&D)", IDM_DATE
end
popup "格式(&O)"
BEGIN
menuitem "自动换行(&T)", IDM_WORDWRAP
menuitem "字体(&T)", IDM_FONT
END
popup "查看(&V)"
BEGIN
menuitem "状态栏(&S)", IDM_STATUS GRAYED
END
popup "帮助(&H)"
BEGIN
menuitem "查看帮助(&H)", IDM_HELP
menuitem separator
menuitem "关于记事本(&A)", IDM_ABOUT
END
END
最后在主程序的创建窗口函数中,把菜单栏的句柄传进去
hwnd = CreateWindow (szAppName,
TEXT ("无标题-记事本"),
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
NULL,
LoadMenu(hInstance,MAKEINTRESOURCE(IDM_MAIN)),
hInstance,
NULL) ;
这样运行程序,菜单栏就出来了

菜单栏的写法可以参考“windows sdk编程系列文章"。作者不知道是谁
win32记事本程序(一)的更多相关文章
- win32记事本程序(二)
遇到一个较大的难题,做记事本要不要使用edit或者是richedit控件呢.如果用控件的话感觉没什么挑战,不用控件,现有的参考资料仅有<windows程序设计>第六章的TYPER程序,这个 ...
- 【windows开发实现记事本程序——界面篇】
前言 从毕业开始学习windows UI编程,工作中总是和一些API打交道,但是从没有做过一个完整的界面程序.因此打算自己利用空余时间做一个小的项目来总结自己所学的东西.在网上看到许多人建议自己动手写 ...
- Win32对话框程序(2)
接着Win32对话框程序(1)来写 ,解决遗留的问题,即理解函数及其调用关系.文章中有些地方是自己的推断,因此肯定有叙述不准确甚至错误的地方,请指正,感谢~ ********************* ...
- java.lang.UnsatisfiedLinkError: %1 不是有效的 Win32 应用程序。
JNA 调用 dll 库时,保错: ///////////////// 通过 JNA 引入 DLL 库 //////////// /** * ID_FprCap.dll 负责指纹的采集, 指纹仪的初始 ...
- python ImportError: DLL load failed: %1 不是有效的 Win32 应用程序
导入的时候报出了 ImportError 在windows上安装python 的模块后,导入模块时报 python ImportError: DLL load failed: %1 不是有效的 Win ...
- 【转】WIN32 控制台程序
http://blog.csdn.net/houmin0036/article/details/7702236 win32控制台项目指在32位Windows命令提示符(即所谓的dos)环境下运行的应用 ...
- 简单记事本程序java源码项目
代码如下 import java.awt.*; import java.io.*; import java.awt.datatransfer.*; import java.awt.event.*; p ...
- qt5.5实现 记事本程序
最近由于要做Qt相关的毕业设计课题,以前对Qt完全不了解,对于客户端图形界面程序,也只对Windows下的MFC熟悉, 所以,由于Qt的跨平台特性和相对比较纯的C++的特点,就准备学习一下吧.这两天逛 ...
- 【转】VS2012编译出来的程序,在XP上运行,出现“.exe 不是有效的 win32 应用程序” “not a valid win32 application”
原文网址:http://www.cnblogs.com/Dageking/archive/2013/05/15/3079394.html VS2012编译出来的程序,在XP上运行,出现“.exe 不是 ...
随机推荐
- 【EasyUI】combotree和combobox模糊查询
这里说的模糊查询指在输入框输入,然后自动在下拉框中显示匹配结果,类似Google搜索提示 EasyUI库已经实现了combobox的查询过滤功能,但只能从头匹配,原因是EasyUI库的代码限制: fi ...
- Thymeleaf+Spring整合
前言 这个教程介绍了Thymeleaf与Spring框架的集成,特别是SpringMvc框架. 注意Thymeleaf支持同Spring框架的3.和4.版本的集成,但是这两个版本的支持是封装在thym ...
- [并查集] POJ 1703 Find them, Catch them
Find them, Catch them Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 43132 Accepted: ...
- Request和response的用法总结
Request 个我总结:只要记住 只要是有关于客户端请求的信息,都可以藉由它来取得,例如请求标头.请求方法.请求参数.使用者IP等等信息. 3.什么情况下为响应?什么情况下为请求? 简单一句话,请求 ...
- GDB配置与.gdbinit的编写
GDB配置与.gdbinit的编写 当 GDB(即 GNU Project Debugger)启动时,它在当前用户的主目录中寻找一个名为 .gdbinit 的文件:如果该文件存在,则 GDB 就执行该 ...
- C++ 类、构造析构、深拷贝
1st,感性理解类的思想,就是把数据和对数据的操作打包在一块儿,设计类的时候要 想好数据部分和 要进行的操作.以下是时间类的示意,时间包含时分秒,Time为构造函数,该类支持的操作就是设置时间和读取时 ...
- Ubuntu14.04使用apt-fast来加快apt-get下载的教程
代码如下: $ sudo add-apt-repository ppa:saiarcot895/myppa $ sudo apt-get update $ sudo apt-get install a ...
- Coding源码学习第一部分(AppDelegate.m)
前言:在此首先感谢开源,感谢大神们的无私分享. Coding 的主页:https://coding.net/app#app-feature Coding 自己家的仓库:https://coding.n ...
- UnityContainer 实现DI
DI(依赖注入) 的方式有很多种: 接口注入,属性注入,构造注入等.DI主要是为了实现代码的松耦合,方便代码的维护和扩展.(其实都是扯淡). 来说说我为啥要使用DI吧.公司有个项目,需要我一个人完成( ...
- Work around by " Due to heavy load, the latest workflow operation has been queued. " 分类: Sharepoint 2015-07-08 00:19 3人阅读 评论(0) 收藏
I hope most of the users and developers might have come across above note and worried about it. Ther ...