VS2013编译WinXP下运行程序注意事项

2024-04-16 16:48

本文主要是介绍VS2013编译WinXP下运行程序注意事项,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

程序有一个对话框窗口。

#include <windows.h>
#include "resource.h"BOOL CALLBACK DlgProc(HWND, UINT, WPARAM, LPARAM);int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,PSTR szCmdLine, int iCmdShow)
{if (-1 == DialogBox(hInstance,MAKEINTRESOURCE(IDD_DIALOGMAIN), NULL, DlgProc)){MessageBox(NULL, TEXT("This program requires Windows NT!"),TEXT(""), MB_ICONERROR);}return 0;
}BOOL CALLBACK DlgProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{switch (message){case WM_INITDIALOG:return TRUE;case WM_COMMAND:switch (LOWORD(wParam)){case IDOK:case IDCANCEL:EndDialog(hDlg, 0);return TRUE;}break;}return FALSE;
}

rc文件:

// Microsoft Visual C++ generated resource script.
//
#include "resource.h"#define APSTUDIO_READONLY_SYMBOLS
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 2 resource.
//
#include "winres.h"/////////////////////////////////////////////////////////////////////////////
#undef APSTUDIO_READONLY_SYMBOLS/////////////////////////////////////////////////////////////////////////////
// 中文(简体,中国) resources#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_CHS)
LANGUAGE LANG_CHINESE, SUBLANG_CHINESE_SIMPLIFIED#ifdef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// TEXTINCLUDE
//1 TEXTINCLUDE 
BEGIN"resource.h\0"
END2 TEXTINCLUDE 
BEGIN"#include ""winres.h""\r\n""\0"
END3 TEXTINCLUDE 
BEGIN"\r\n""\0"
END#endif    // APSTUDIO_INVOKED/////////////////////////////////////////////////////////////////////////////
//
// Dialog
//IDD_DIALOGMAIN DIALOGEX 0, 0, 383, 197
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU
EXSTYLE WS_EX_TRANSPARENT
CAPTION "aaa"
FONT 8, "MS Shell Dlg", 400, 0, 0x1
BEGINDEFPUSHBUTTON   "确定",IDOK,270,163,50,14PUSHBUTTON      "取消",IDCANCEL,326,163,50,14GROUPBOX        "Static",IDC_STATIC,12,18,139,141EDITTEXT        IDC_EDITA,71,36,51,14,ES_AUTOHSCROLLEDITTEXT        IDC_EDITB,72,54,51,14,ES_AUTOHSCROLLEDITTEXT        IDC_EDITC,72,72,51,14,ES_AUTOHSCROLLEDITTEXT        IDC_EDITD,72,90,51,14,ES_AUTOHSCROLLPUSHBUTTON      "Button1",IDC_BUTTON1,55,135,50,14GROUPBOX        "Static",IDC_STATIC,161,22,152,134
END/////////////////////////////////////////////////////////////////////////////
//
// DESIGNINFO
//#ifdef APSTUDIO_INVOKED
GUIDELINES DESIGNINFO
BEGINIDD_DIALOGMAIN, DIALOGBEGINEND
END
#endif    // APSTUDIO_INVOKED#endif    // 中文(简体,中国) resources
/////////////////////////////////////////////////////////////////////////////#ifndef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 3 resource.
///////////////////////////////////////////////////////////////////////////////
#endif    // not APSTUDIO_INVOKED

1.平台工具集 选择 Visual Studio 2013 - Windows XP (v120_xp)。
2.运行库 选择 多线程/MT。
3.配置属性-链接器-系统-子系统 选择 窗口 (/SUBSYSTEM:WINDOWS),以更改入口,否则在XP下报“无法识别的win32程序”。
4.Dialog中只能包含Windows标准控件,使用通用控件要在DialogBox前加入

    INITCOMMONCONTROLSEX icex;icex.dwSize = sizeof(INITCOMMONCONTROLSEX);icex.dwICC = ICC_WIN95_CLASSES;InitCommonControlsEx(&icex);

InitCommonControls();

并且在头加入

#include <commctrl.h>
#pragma comment(lib,"comctl32.lib")

否则DialogBox将返回失败值。

可以支持清单文件样式:

//CommonStyle.h
#if defined _M_IX86
#pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='x86' publicKeyToken='6595b64144ccf1df' language='*'\"")
#elif defined _M_X64
#pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='amd64' publicKeyToken='6595b64144ccf1df' language='*'\"")
#else
#pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*'\"")
#endif

关于减小程序大小:
1.配置属性-链接器-调试-生成调试信息 选择 无,可有效减小程序大小(165KB->65KB)。
2.可能是代码原因,/O2(速度最快)和/O1(大小最小)差别不大。

参考文献
Windows SDK中的标准控件和通用控件
http://blog.csdn.net/cml2030/article/details/6093306

这篇关于VS2013编译WinXP下运行程序注意事项的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/909350

相关文章

golang程序打包成脚本部署到Linux系统方式

《golang程序打包成脚本部署到Linux系统方式》Golang程序通过本地编译(设置GOOS为linux生成无后缀二进制文件),上传至Linux服务器后赋权执行,使用nohup命令实现后台运行,完... 目录本地编译golang程序上传Golang二进制文件到linux服务器总结本地编译Golang程序

java使用protobuf-maven-plugin的插件编译proto文件详解

《java使用protobuf-maven-plugin的插件编译proto文件详解》:本文主要介绍java使用protobuf-maven-plugin的插件编译proto文件,具有很好的参考价... 目录protobuf文件作为数据传输和存储的协议主要介绍在Java使用maven编译proto文件的插件

Java 方法重载Overload常见误区及注意事项

《Java方法重载Overload常见误区及注意事项》Java方法重载允许同一类中同名方法通过参数类型、数量、顺序差异实现功能扩展,提升代码灵活性,核心条件为参数列表不同,不涉及返回类型、访问修饰符... 目录Java 方法重载(Overload)详解一、方法重载的核心条件二、构成方法重载的具体情况三、不构

使用Docker构建Python Flask程序的详细教程

《使用Docker构建PythonFlask程序的详细教程》在当今的软件开发领域,容器化技术正变得越来越流行,而Docker无疑是其中的佼佼者,本文我们就来聊聊如何使用Docker构建一个简单的Py... 目录引言一、准备工作二、创建 Flask 应用程序三、创建 dockerfile四、构建 Docker

Go语言中nil判断的注意事项(最新推荐)

《Go语言中nil判断的注意事项(最新推荐)》本文给大家介绍Go语言中nil判断的注意事项,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录1.接口变量的特殊行为2.nil的合法类型3.nil值的实用行为4.自定义类型与nil5.反射判断nil6.函数返回的

Visual Studio 2022 编译C++20代码的图文步骤

《VisualStudio2022编译C++20代码的图文步骤》在VisualStudio中启用C++20import功能,需设置语言标准为ISOC++20,开启扫描源查找模块依赖及实验性标... 默认创建Visual Studio桌面控制台项目代码包含C++20的import方法。右键项目的属性:

MySQL 获取字符串长度及注意事项

《MySQL获取字符串长度及注意事项》本文通过实例代码给大家介绍MySQL获取字符串长度及注意事项,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录mysql 获取字符串长度详解 核心长度函数对比⚠️ 六大关键注意事项1. 字符编码决定字节长度2

C++链表的虚拟头节点实现细节及注意事项

《C++链表的虚拟头节点实现细节及注意事项》虚拟头节点是链表操作中极为实用的设计技巧,它通过在链表真实头部前添加一个特殊节点,有效简化边界条件处理,:本文主要介绍C++链表的虚拟头节点实现细节及注... 目录C++链表虚拟头节点(Dummy Head)一、虚拟头节点的本质与核心作用1. 定义2. 核心价值二

k8s上运行的mysql、mariadb数据库的备份记录(支持x86和arm两种架构)

《k8s上运行的mysql、mariadb数据库的备份记录(支持x86和arm两种架构)》本文记录在K8s上运行的MySQL/MariaDB备份方案,通过工具容器执行mysqldump,结合定时任务实... 目录前言一、获取需要备份的数据库的信息二、备份步骤1.准备工作(X86)1.准备工作(arm)2.手

详解MySQL中DISTINCT去重的核心注意事项

《详解MySQL中DISTINCT去重的核心注意事项》为了实现查询不重复的数据,MySQL提供了DISTINCT关键字,它的主要作用就是对数据表中一个或多个字段重复的数据进行过滤,只返回其中的一条数据... 目录DISTINCT 六大注意事项1. 作用范围:所有 SELECT 字段2. NULL 值的特殊处