没有合适的资源?快使用搜索试试~ 我知道了~
让我们写一个 Win32 文本编辑器吧 - 2. 计划和显示.doc
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 133 浏览量
2022-07-09
16:08:24
上传
评论
收藏 973KB DOC 举报
温馨提示
试读
15页
让我们写一个 Win32 文本编辑器吧 - 2. 计划和显示.doc
资源推荐
资源详情
资源评论
让我们写一个 Win32 文本编辑器吧 - 2. 计划和显示
让我们写一个 Win32 文本编辑器吧 - 2. 计划和显示
如果你已经阅读了简介,相信你已经对我们接下来要做的事情有所了解。
本文,将会把简介中基础程序修改为一个窗体应用程序。并对编辑器接下来的编辑计划进
行说明。
1. 程序改造
阅读过曾经我认为 C 语言就是个弟弟这篇文章的读者应该知道,编辑器(包括所有 Win32
应用程序控件),本质上都是一个窗口(WNDCLASSA(已被 WNDCLASSEX 取代)结构体描
述)。
在本节,我们将对上一篇文章所建立的项目进行改造,使其弹出一个主窗体,并附加一个
编辑器窗体。
设置项目子系统
在之前,我们为了简便,没有修改 vicapp 项目的子系统,其默认值为控制台应用程序,
所以我们可以用如下代码调用 vitality-controls 给出的函数 vic_prints。
#include “../../shared-include/vitality-controls.h”
int main(int argc, char** argv) {
vic_prints(“hello vic.”);
return 0;
}
但是,对于一个编辑器来说,应该是一个窗体应用程序。所以,我们要对 vicapp 进行子
系统设置,打开 vicapp 项目属性(参考上一篇文章),最终设置如下:
修改主程序代码
修改之系统为窗口后,编译程序,会发现如下错误:
这是因为,链接程序会根据项目设置,去查找不同的主函数名称,而对于窗体应用程序,
其主函数名应为 WinMain,所以这里会报找不到符号 WinMain,因为我们没有定义它。
对 于 不 同 项 目 类 型 的 启 动 函 数 定 义 , 参 考 文 件 VS 安 装 目 录
\VC\Tools\MSVC\14.31.31103\crt\src\vcruntime\exe_common.inl, 现在将相关代码列出如下:
#if defined _SCRT_STARTUP_MAIN
using main_policy = __scrt_main_policy;
using file_policy = __scrt_file_policy;
using argv_policy = __scrt_narrow_argv_policy;
using environment_policy = __scrt_narrow_environment_policy;
static int __cdecl invoke_main()
{
return main(__argc, __argv, _get_initial_narrow_environment());
}
#elif defined _SCRT_STARTUP_WMAIN
using main_policy = __scrt_main_policy;
using file_policy = __scrt_file_policy;
using argv_policy = __scrt_wide_argv_policy;
using environment_policy = __scrt_wide_environment_policy;
static int __cdecl invoke_main()
{
return wmain(__argc, __wargv, _get_initial_wide_environment());
}
#elif defined _SCRT_STARTUP_WINMAIN
using main_policy = __scrt_winmain_policy;
using file_policy = __scrt_file_policy;
using argv_policy = __scrt_narrow_argv_policy;
using environment_policy = __scrt_narrow_environment_policy;
static int __cdecl invoke_main()
{
return WinMain(
reinterpret_cast(&__ImageBase),
nullptr,
_get_narrow_winmain_command_line(),
__scrt_get_show_window_mode());
}
#elif defined _SCRT_STARTUP_WWINMAIN
using main_policy = __scrt_winmain_policy;
using file_policy = __scrt_file_policy;
using argv_policy = __scrt_wide_argv_policy;
using environment_policy = __scrt_wide_environment_policy;
static int __cdecl invoke_main()
{
return wWinMain(
reinterpret_cast(&__ImageBase),
nullptr,
_get_wide_winmain_command_line(),
__scrt_get_show_window_mode());
}
剩余14页未读,继续阅读
资源评论
书博教育
- 粉丝: 1
- 资源: 2835
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功