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 不是 ...
随机推荐
- 关于/usr/local/lib/libz.a(zutil.o): relocation R_X86_64_32 against `.rodata.str1.1' can not be used when making a shared object; recompile with -fPIC解决办法
具体报错截图如下: 解决方法: 题外话,我对makefill cmake也是一窍不通因此本人也是不想去积极的解决这个问题,但是当你求助无缘的时候你才会静心去思考.读到这句话的时候也许你已经发现了问题所 ...
- toolsqa-IMPORTANCE
http://toolsqa.com/cucumber/cucumber-options/
- GDI+ 绘制经验
现有一种场景,鼠标移动时,假设鼠标坐标为 X , Y , 需实时在 坐标 (X , 0) , (0 , Y) 两处更新内容. 方案一:增加两个label ,或其它控件,鼠标移动时,实时更新 label ...
- How to create your own custom 404 error page and handle redirect in SharePoint 分类: Sharepoint 2015-07-08 00:22 4人阅读 评论(0) 收藏
1. In your MOSS server, make a copy of %systemdrive%\Program Files\Common Files\Microsoft Shared\Web ...
- BOM 和DOM
BOM 1.BOM:浏览器对象模型(Browser Object Model)尚无正式标准: 2.Window 对象:所有浏览器都支持 window 对象.它表示浏览器窗口. 3.Window 尺寸 ...
- React之Composition Vs inheritance 组合Vs继承
React的组合 composition: props有个特殊属性,children,组件可以通过props.children拿到所有包含在内的子元素, 当组件内有子元素时,组件属性上的child ...
- char* 和char[]的区别
以下内容均来自互联网,系笔者汇总并总结. 1. 问题介绍 问题引入:在实习过程中发现了一个以前一直默认的错误,同样char *c = "abc"和char c[]="ab ...
- [转载] javascript实现深度克隆
js一般有两种不同数据类型的值: 基本类型(包括undefined,Null,boolean,String,Number),按值传递: 引用类型(包括数组,对象),按址传递,引用类型在值传递的时候是内 ...
- git基本技巧及进阶
基本技巧 1. 安装后的第一步 在安装好git后,你第一件该做的事是设置你的名字和电子邮箱,因为每次提交都要用到这些信息: $ git config --global user.name " ...
- Activity 生命周期
Activity 的四种基本状态 1.运行态(Running) Activity 处于屏幕最前端,用户可见且获得焦点. 2.暂停态(Paused) Activity被置于后台,用户可见,但失去焦点 3 ...