
从表面上来看:控制台程序运行时是在DOS环境下,或者模拟dos环境运行的程序,运行时一般会启动一个提示符窗口。
而应用程序是Windows环境下的窗口程序。运行时一般会启动一个窗口画面。(例外,病毒木马,就不显示窗口,这决定于是否创建了窗口,或者是否让窗口显示)
但是,实质上,windows应用程序和控制台应用程序的真正区别是,PE文件的结构不同,这点不需要我们去关心,编译器会根据你的选择去构建生成的exe文件的PE结构。
如何告之编译器你的选择在编译器进行连接的时候,给它一个连接参数:
subsystem:windows或者subsystem:console来告诉它。对于大多数编程工具来说一般在“工程->设置->连接”这个表单里面就可以看到这个参数。
但是通常在我们要创建一个新的工程的时候,编译器会让我们事先选择好是创建windows应用程序还是创建控制台应用程序。这个参数的设置就不用我们 *** 心了。
补充(你可以不看,有点复杂了):事实上,控制台程序依然还有区别,那就是,16位的可以在DOS *** 作系统环境中运行的DOS程序(也可以在window运行通常windows会模拟一个dos环境,这时你会程序窗口与平时的提示符窗口明显不一样),和 32位通常只能在windows *** 作系统中运行的程序。通常32位控制台在DOS下运行,它的PE结构中会给予DOS环境下运行的一个入口点(DOS文件头),这个入口点只有“一行”代码:"This program cannot be run in DOS mode"
而在32位系统下, *** 作系统将将查看PE文件头里面的subsystem字段来获得程序将以什么方式运行(windoes或者console)这个字段里面指示了子系统(CUI对应控制台,GUI对应普通程序,驱动程序等没有子系统)32位的控制台程序当然可以调用PAI函数,而16位的DOS程序则不可以调用API函数。
再补充关于编译器的一点内容:通常大学里面学习C,c++时,最常用的是VC60
TC++30 和 TC20 VC60只能写32位程序。(也就是不能写Dos程序)
而TC++30 和 TC20这两个编译器是16位的编译器,不能写窗口程序(因为调用不了API(之所以调用不了,固然是编译器的限制,但实质是编译器根本不去使用32位寄存器))
那么,如何才能写一个即可以在DOS运行,又可以在windows下运行的程序(还要带窗口)那就是要修改exe的PE文件结构,使用人工方法粘贴代码。复杂了,不说了
如果移出焦点和移入是同一个 则setfocus()函数不执行 所以下面的InvalidateRect(hwnd,NULL,FALSE);必须要有
pS 我也在看这本书,也有和你一样的疑问和猜测 最后在google找到上面的话 经验证是正确的 你看到哪了?
VB中有shell函数来打开指定的文档
在windows API中有两个函数也可以用来打开指定的文档Winexec和ShellExecute
我想windows应该是调用API来实现的
需要从msdn里面查看,msdn,msdn是微软官方的windows函数词典,里面包含多种函数,其中windowsh里边所有函数的参数,返回值,用法都有介绍
MSDN:
MSDN 的全称是 Microsoft Developer Network。这是微软公司面向软件开发者的一种信息服务。MSDN 实际上是一个以 Visual Studio 和 Windows 平台为核心整合的开发虚拟社区,包括技术文档、在线电子教程、网络虚拟实验室、微软产品下载(几乎全部的 *** 作系统、服务器程序、应用程序和开发程序的正式版和测试版,还包括各种驱动程序开发包和软件开发包)、Blog、BBS、MSDN WebCast、与 CMP 合作的 MSDN 杂志等等一系列服务。
一般情况下,很多人误认为 MSDN 为联机帮助文件和技术文献的集合。但事实上,这两者只占 MSDN 庞大计划的一小部分。MSDN 实际上是一个以 Visual Studio 和 Windows 平台为核心整合的开发虚拟社区,包括技术文档、在线电子教程、网络虚拟实验室、微软产品下载(几乎全部的 *** 作系统、服务器程序、应用程序和开发程序的正式版和测试版,还包括各种驱动程序开发包和软件开发包)、Blog、BBS、MSDN webcast、与 CMP 合作的 MSDN 杂志等等一系列服务。
其中产品下载、在线电子教程、MSDN 杂志和技术紧急电话支援是要付费的,其余基本免费。当然, MSDN 杂志可以通过微软公司的网站免费观看或者下载(>
API全称是Application Programming Interface,可以称为“应用程序编程接口”。可由 *** 作系统或其他应用程序调用。它是 *** 作系统自带的一套强大的函数集,直接面对 *** 作系统的底层,可以完成一些VB不能实现的功能,执行效率要比VB自带的函数高。
声明API函数的语句格式如下:
[public/private]Declare Function API 函数名 Lib "该函数所在的文件名"[Alias "该函数的别名"][(变量名及变量类型说明)] as API 函数类型说明。
以上就是关于什么函数是Windows应用程序开始执行时的入口点全部的内容,包括:什么函数是Windows应用程序开始执行时的入口点、windows程序设计,SetFocus()函数问题、windows打开文件时调用的函数是什么等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)