引言:

首先,如果学习标C,黑窗口程序,真的没有必要非要用VC;

那么问题来了:学习WIN32是否需要用VC?

我的答案是:不是非要VC不可,其它IDE也可以用来学WIN32;

甚至我一度以为的学到时资源不得不用VC,目前看来稍微费点力气,

也是可以用其它IDE来完成的

但是,使用VC会让你学得更轻松,更自在~

WIN32的学习是需要一定的时间的,初步了解WIN32的框架差不多也需要60小时左右,

这相当于在大学里学完标准C语言这门课的时间。

WIN32通常都是用VC通过可视化界面添加资源,

资源文件的扩展名是.rc,它必须有resource.h的头文件来辅助

在程序编译时它会被资源编译器编译生成一个.res的文件

.rc文件的语法:

1.注释:注释方式和 C语言相通,单行注释用 // 符号,多行注释用 /* ... */符号。

2.预处理命令:预处理指令包括一些头文件的引用(使用 #include,也同 C 语言)。

3.编译指令:预定义(#define,常量和宏,不支持带参数的宏)和条件编译(#if, #ifdef, #undef, #ifndef, #else, #elif, #endif等)。

4.资源定义声明:资源定义的声明中包括“资源”(Resources),"控件"(Controls)和 “声明”(Statements) 3类。

.rc文件的编译:

在VC中,使用RC.EXE对.rc文件进行编译,生成.res的汇编文件,

使用CL.EXE编译C/C++文件,生成.obj的汇编文件

再由LINK.EXE链接这些文件和user32.lib生成.exe

在mingw编译器中,

使用windres.exe对.rc文件进行编译,

用gcc/g++对C/C++源文件进行编译再进行链接

这些手工输命令的方式过于繁杂,所幸基本上IDE都会提供自动编译+链接的功能,

VC自然有这个功能,其它的IDE比如 C-Free也同样OK,DEV_CPP也OK

本文最后附上DEV_CPP的实现步骤

1.       文件导入的资源(BITMAP, ICON, HTML, FONT, CURSOR)

举例:

.rc :

#include<windows.h>

#include"resource.h"

IDI_ICON1 ICON "dlgapp.ico" //ICON RESOURCE

Resource.h:

#define IDI_ICON1 1001

注册窗口类:

wcs.hIcon = LoadIcon(

g_hInstance,

MAKEINTRESOURCE(IDI_ICON1));

例2:CURSOR

.rc:

IDC_CURSOR1 CURSOR "lmove.cur"

Resource.h:

#define IDC_CURSOR1 1002

注册窗口类:

wcs.hCursor = LoadCursor(g_hInstance,MAKEINTRESOURCE(IDC_CURSOR1));

对话框资源:

见图:

对应的.rc文件:

IDD_DIALOG1 DIALOG DISCARDABLE  0, 0, 187, 94

STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU

CAPTION "对话"

FONT 10, "System"

BEGIN

DEFPUSHBUTTON   "确定",IDOK,130,7,50,14

PUSHBUTTON      "取消",IDCANCEL,130,24,50,14

END

对应resource.h:

#define IDD_DIALOG1 102

对应的.cpp文件:

voidOnNoModel(HWND hWnd)

{

HWND hDlg = CreateDialog(g_hInstance,//根据资源创建对话框

MAKEINTRESOURCE(IDD_DIALOG1),hWnd, MyDialogProc);

ShowWindow(hDlg,1);//需要显示对话框

}

菜单资源:(当然,菜单不使用资源也可以创建的~用命令创建的感觉和QT用命令创建很相似,本文不涉及)

对应的.rc文件:

#include"resource.h"

#include<windows.h>

IDR_MENU1 MENU       //MENU RESOURCE

BEGIN

POPUP "File"        // POPUP RESOURCE

BEGIN

MENUITEM "&Open",        ID_FILE_OPEN    // MENUITEM  STATEMENT

MENUITEM "&Save",        ID_FILE_SAVE    // MENUITEM  STATEMENT

MENUITEM SEPARATOR           // MENUITEM  STATEMENT

MENUITEM "E&xit",         ID_FILE_EXIT  // MENUITEM  STATEMENT

    END                                                                     

END

对应的resource.h文件:

#define IDR_MENU1 1001

#define ID_FILE_OPEN 1003

#define ID_FILE_SAVE 1004

#define ID_FILE_EXIT 1005

对应的.cpp文件:

wcs.lpszMenuName = MAKEINTRESOURCE(IDR_MENU1);

字符串表类型:

对应的.rc文件:

//例子

STRINGTABLE

BEGIN

IDS_1 L"5\x00BC-Inch Floppy Disk"

IDS_2 L"Don't confuse"

IDS_3 "Copyright \xA92001"

END 

对应的.h文件和.cpp文件略

DEV_CPP实现资源应用的步骤:

1.       编写.rc文件:

2.       编写resource.h文件:

3.       更改main1.cpp文件:

4.       点击编译运行按钮:(鼠标的样子也变化了,只是截图显示不出来)

WIN32编程之.rc资源文件的使用相关推荐

  1. VC2010打开资源视图时提示“指南必须指定类型”,.rc资源文件损坏(转)

    VC: 打开资源视图时提示"指南必须指定类型 "(Guideline--specify type) ,.rc资源文件损坏 可能是TFS导致的 使用记事本打开.rc文件,找到&quo ...

  2. PW系列 | 用windres 编译.rc 资源文件

    目录 版权 Original test.rc 资源文件 编译资源文件 编译程序 改用int 标志资源 .RC常见问题 忘记include 头文件 头文件里忘记define 常量 DIALOG x/y ...

  3. VC++创建.rc资源文件

    初学MFC,对资源文件总是很困惑.一上来就直接自动生成了那么多的东西,尤其是.rc和resource.h文件.这两天了解了一下这个方面,在这里分享一下,欢迎交流学习. 1.前两天看了一个关于MFC初始 ...

  4. Hadoop 核心编程之 HDFS 的文件操作

    前言 本文并没有打算介绍 HDFS 的读写流程,虽然这是一块比较重要的内容.如果你感兴趣,可以去搜索相关资料.如果一遍没有看懂,请看第二遍. 本文还是以代码为主,并附以简短的说明,帮助你理解代码的逻辑 ...

  5. vc 国际化的资源文件处理

    MS Windows操作系统是一个世界上广泛使用的操作系统,对于不同语种的国家MS Windows有相应语种的版本.在不同语种的Windows平台上应该运行相应语种的应用程序.也就是说程序的用户界面( ...

  6. VC中将bmp作为资源文件写入EXE或DLL,然后内部调用(转)

    (Win32 DLL 工程,或者其他Console或MFC工程等) 1.在VC编译器中,选择Insert -->Resource,选中Bitmap-->Import,将文件类型修改为所有类 ...

  7. Win32窗体应用程序如何添加资源文件?

    Win32窗体应用程序如何添加资源文件? 上一篇文章介绍了:如何创建一个最简单的Windows窗体应用程序. 按照上一篇文章的介绍,我们的HelloApp项目对应如下的窗体应用程序: 这一篇文章中,我 ...

  8. Windows 资源文件(.rc文件)小记

    在windows下使用Qt时,通常会用到Windows的资源文件(给exe设置图标和版本信息等),比如命名为 main.rc #include "winver.h" IDI_ICO ...

  9. 使用资源文件绘制Win32对话框

    以前一直以为Win32不能拖控件,现在才知道原来是可以的. 本文演示使用VC6创建一个基于对话框的Win32程序,界面使用资源文件绘制. 创建一个Win32应用程序 创建对话框资源文件 点击 File ...

最新文章

  1. 谷歌内部考核制度OKR是怎么样的?你会用OKR吗?
  2. ASP .NET Core Web Razor Pages系列教程五:更新Razor Pages页面
  3. 计算两个日期之间有多少天多少小时多少分钟
  4. junit4使用心得
  5. jmeter吞吐量_进阶Spring Boot---Tomcat与Undertow 吞吐量对比
  6. mysql where varchar_MySQL数据库之MySQL索引使用:字段为varchar类型时,条件要使用''包起来...
  7. C语言之字符串探究(八):strchr、strstr、strtok
  8. python爬取新闻存入数据库_Python爬取数据并写入MySQL数据库的实例
  9. Android轩辕剑之ActionBar之一
  10. Web服务的性能,和BCrypt性能问题的解决方法
  11. 平安城市视频监控运维解决方案
  12. hdu5833 Zhu and 772002 (高斯消元的简单应用)
  13. spoon链接本地的db2报错
  14. 转录组+云平台助力HIF-1α促进冠状病毒感染的分子机制研究
  15. [ArcGIS].txt或.xlxs(Excel)格式如何转为.shp格式?
  16. hive之full outer join(全连接)使用方法
  17. BookKeeper源码解析之Bookie启动流程(一)
  18. 学VC,我想对自己说......
  19. OCT1400 光耦参数测试仪
  20. 计算机组成原理pc的长度,计算机组成原理课后习题答案(一到九章)

热门文章

  1. B2B电子商务网站的商品管理功能模块详解:赋能日化行业管理提效
  2. python 生成电商的订单号
  3. day8--socketserver回顾
  4. 最新WordPress全开源艺术主题Artblog模板
  5. python百度网盘自动同步_bypy-让你的猫盘随时同步文件至百度云 - 矿渣社区 - 猫盘 - 硬件专区 - Powered by Discuz!...
  6. 非最大值抑制(NMS)(二)
  7. QQ、微信、支付宝等账号可以继承吗?
  8. 进程的三种状态以及转换
  9. 运行Form时提示参数无效直接崩溃的解决办法
  10. 机房重构(C#)--七层登录(一)