01 Windows编程——Hello World
源码
#include "stdafx.h"
#include<Windows.h> int WINAPI WinMain(HINSTANCE hInst,HINSTANCE tmp,LPSTR strCmd,int nShow)
{
MessageBox(NULL, "Hello World!", "Title", );
}
int MessageBox(
HWND hWnd,
LPCTSTR lpText,
LPCTSTR lpCaption,
UINT uType
);
hWnd:指向message box 的 owner window的句柄,如果为NULL,表明没有owner window,他的owner window就是桌面
lpText:要显示消息的内容
lpCaption:message box的标题,如果为NULL,则显示为默认值 Error
uType:指定一个决定对话框的内容和行为的位标志集。
报 类型参数不匹配 bug
原因是字符集设置有问题,改成ASCII
修改后不再报 类型参数不匹配,build一下,build失败
原因是入口函数没有设置正确。WIndows窗体程序的入口函数是WinMain。控制台程序的入口函数是main。
修改如下
此时可以正常运行
代码讲解
Winddows窗体程序的入口函数是WinMain,这个函数定义如下
int CALLBACK WinMain(
_In_ HINSTANCE hInstance,
_In_ HINSTANCE hPrevInstance,
_In_ LPSTR lpCmdLine,
_In_ int nCmdShow
);
HINSTANCE这个类型是我们没见过的。F12逐层查看定义如下。##是连字符
DECLARE_HANDLE(HINSTANCE);
DECLARE_HANDLE(name) struct name##__{ int unused; }; typedef struct name##__ *name
宏展开后代码如下。可见HINSTANCE是一个指向结构体的指针。
struct hinstance__
{
int unused;
};
typedef struct hinstance__ *hinstance;
int WINAPI WinMain(HINSTANCE hInst,HINSTANCE tmp,LPSTR strCmd,int nShow)
HINSTANCE:执行当前应用程序实力的句柄
hInst:该应用程序的基地址,指向当前程序实例的句柄
tmp:这个值现在一直为NULL
strCmd:除了命令名,命令后面的参数
nShow:控制窗口如何被显示
打印内存基地址源码
#include "stdafx.h"
#include<Windows.h>
#include <stdio.h> int WINAPI WinMain(HINSTANCE hInst,HINSTANCE tmp,LPSTR strCmd,int nShow)
{
char str[];
sprintf(str,"0x%x",hInst);
MessageBox(NULL, str, "内存基地址", );
}
默认情况下VS 2017开启的是随机基地址,可以在属性->连接器->高级 下边设置
属性->连接器->高级->入口点
Windows窗体程序默认的入口点是WInMain,当让我们也可以修改成其他的字符
build一下,报错,还需要设置子系统
几乎所有的Windows窗体应用程序都需要包含 #include<Windows.h>
Windows.h是一个最重要的包含文件,它囊括了若干其他Windows头文件,其中的某些头文件又包含另外的一些头文件。下列几个是最重要也是最基本的头文件:
#include <windef.h> 基本数据类型定义。
#include <winbase.h> 内核函数。
#include <wingdi.h> 图形设备接口函数。
#include <winuser.h> 用户界面函数。
01 Windows编程——Hello World的更多相关文章
- MFC入门教程01 Windows编程基础
- <2013 12 01> 一篇很好的关于windows编程的入门指导(2013年末写的,比较前沿)
我之前做了不少嵌入式开发,从单片机到ARM到RTOS到Linux等等,可以说走的是电气工程师的路线,对编程也是实用性的,跟计算机学院的科班套路不同.最近同学做一个windowsCE的项目请我帮忙,之前 ...
- 【WCF--初入江湖】01 WCF编程概述
01 WCF编程概述 SOA的优点 1.服务独立于平台和工作环境.服务并不关心自己所处的环境,也不关心与之进行通信的服务所处的 环境. 2.服务相互隔离. 3.服务对协议.格式和传输中立. 4. ...
- 设置windows窗口ICON 【windows 编程】【API】【原创】
1. ICON介绍 最近开始接触windows 编程,因此将自己所接触的一些零散的知识进行整理并记录.本文主要介绍了如何更改windows对话框窗口的ICON图标.这里首先介绍一下windows IC ...
- Windows编程坐标系统概念
Windows编程中关于设置映象模式的四个函数 SetWindowOrgSetViewPortOrgSetMapModeSetWindowExtExSetViewPortExtEx 一.Windows ...
- 【Windows编程】系列第六篇:创建Toolbar与Statusbar
上一篇我们学习了解了如何使用Windows GDI画图,该应用程序都是光光的静态窗口,我们使用Windows应用程序,但凡稍微复杂一点的程序都会有工具栏和状态栏,工具栏主要用于一些快捷功能按钮.比如典 ...
- 【Windows编程】系列第十一篇:多文档界面框架
前面我们所举的例子中都是单文档界面框架,也就是说这个窗口里面的客户区就是一个文档界面,可以编写程序在里面输入或者绘制文本和图形输出,但是不能有出现多个文档的情况.比如下面的UltraEdit就是一个典 ...
- 【Windows编程】系列第十篇:文本插入符
大家知道,在使用微软的编程环境创建工程时会让你选择是控制台模式还是Windows应用程序.如果选择控制台的console模式,就会在运行时出现一个黑洞洞的字符模式窗口,里面就有等待输入一闪一闪的插入符 ...
- 【Windows编程】系列第八篇:通用对话框
上一篇我们学习了菜单的基本编程,本篇来了解一下通用对话框的使用.Windows系统之所以是目前最流行的桌面系统,也是因为Windows有一套标准化,统一友好的交互界面,比如菜单.工具栏.状态栏以及各个 ...
随机推荐
- iOS 在iphoneX上运行的app没有icon图标,在其他手机上有图标
今天朋友问了一个问题,在iPhoneX上运行的app没有icon图标,在其他手机上有图标. 一开始我以为是没放iPhoneX的图标,后面朋友解决了,告诉了我原因,这里记录下吧: 原因: 图标格式问题, ...
- 【MM系列】在SAP里查看数据的方法
公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[MM系列]在SAP里查看数据的方法 前言部 ...
- Ext.jsTree 向子节点添加叶子节点
// 定义搜索节点树结构Store const nodeStore = Ext.create('Ext.data.TreeStore', { autoLoad : true, id : 'nodeSt ...
- 【ARM-Linux开发】Rico Board上编译USB WiFi RT3070驱动
1.附件中提供了RT3070驱动源码包DPO_RT5572_LinuxSTA_2.6.1.3_20121022.tar.gz和编译好的驱动,这里选择使用taget_file.tar.gz中已经编译好的 ...
- MySQL安装时出现的问题
mysql正常安装结束之后需要连接你所安装的数据库的时候出现下面的错误: Client does not support authentication protocol requested by se ...
- eclipse搭建springboot的项目
记录一次自己搭建springboot的经历 springboot项目创建 这里借用别的博主分享的方法 https://blog.csdn.net/mousede/article/details/812 ...
- RAID(独立磁盘冗余阵列)
Raid RAID 独立磁盘冗余阵列,在本科学习时候学习过,记不清是组成原理还是操作系统,当时理解的不太清楚,现在研究生期间做存储相关项目,涉及到了Raid,于是查各种博客,为了以后便于后期查阅, ...
- Git在新电脑拉github 上的项目
非小白教程.多少有点了解的才能看懂. 1,安装git 忽略,任意i找一个图文教程即可 2,在命令行模式 输入 cd ~/.ssh/ 进入c:administrator的文件下的.ssh文件夹: 或者 ...
- 【牛客网】Idol Master
[牛客网]Idol Master 也是一道网络流解线性规划 不过需要从小于号的那边解 限制是\(a \leq \sum_{i = 1}^{k} x_{i}\leq b\) 其中\(0 \leq x_{ ...
- LC 21. Merge Two Sorted Lists
题目描述 Merge two sorted linked lists and return it as a new list. The new list should be made by splic ...