Win32控制台程序是什么

刚接触Windows那一套,大多数概念都还没建立起来,整理了一下网上对“Win32控制台程序”的理解,谢谢各位网友了。

win32控制台项目指在32位Windows命令提示符(即所谓的dos)环境下运行的应用程序...
win32项目指运行于32位Windows操作系统中的应用程序...包括win32控制台项目...

1、Win32项目包括:Win32 应用程序、控制台应用程序、DLL 或其他静态库的项目;
2、控制台应用程序通常被设计为没有图形用户界面,并编译成独立的可执行文件。控制台应用程序通常从命令行运行,同时在命令提示和运行的应用程序之间交换输入和输出信息。

win32应用程序是有窗体的(当然也可以没有),有Windows消息循环机制的。 而win32控制台应用程序只是在控制台下运行的程序,类似以前dos的程序。

可以在VC里建一个win32 application和一个win32 console application,两个dsp工程文件对比一下,你会发现应用程序里的subsystem:windows,控制台程序里的subsystem:console。 subsystem这个链接选项告诉Windows如何运行可执行文件。 subsystem是console的话,Windows在进入可执行文件的代码前,就会产生一个控制台窗口。 subsystem是windows的话,操作系统就不产生console窗口,该应用程序的窗口由用户自己创建。

可以调用GUI里面的API的, 
如果你看了一些VC的启动代码(就是main,WinMain,DllMain之前的代码)就知道 
控制台程序在启动代码中多了取得标准输入输出句柄以及将程序参数转化成C语言格式 
的参数形式

控制台程序就是通过命令行的方式进行输入和输出的 
Win32程序是它的上层概念,Win32程序可以是Console的也可以是GUI的

Win32  程序:利用Windows编译器、连接器做出来的程序,都是所谓的Win32程序。 
Console程序:也是Win32程序,它是dos-like程序,可以调用C Runtime函数和不牵涉GUI的Win32API函数。Console视窗将是其标准输入输出设备(cin、cout)。 
Dos程序:过去在dos环境开发的程序。它也是以main()为函数进入点,可以调用C Runtime函数,但是不具备调用Win32API函数的能力。 


Windows支持的两种应用程序:
 (1) 基于图形用户界面的应用程序,即GUI;
 (2) 基于控制台用户界面的应用程序,即CUI.
  Windows应用程序必须有一个在应用程序启动运行的调用进入点函数:
      应用程序类型             进入点
   需要ANSI字符和字符串的GUI应用程序      WinMain
     需要ANSI字符和字符串的CUI应用程序          main
     需要Unicode字符和字符串的GUI应用程序    wWinMain
   需要Unicode字符和字符串的CUI应用程序    wmain

前面是DOS环境的,是单任务的 
后面是WINDOWS的,支持多任务,多线程~

win32控制台程序是用来编写DOS程序的,在DOS下生成WINDOWS窗口的编写是相当麻烦的。要用DOS下c语言的绘图函数把窗口画出来。 但VC已经提供了窗口的框架和显示,我们现在没必要再去做这些工作了。 程序入口不能决定任何事,它就是一个入口,程序必须有它,程序完成什么样的功能由程序的代码来确定。 窗口就是一个图形,是由程序画出来的,代码封装在MFC底层。我们不需要具体了解,只需要知道原理就可以了。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Win32控制台程序中创建数据库需要使用相应的数据库管理系统(DBMS)和API。以下是使用ODBC API创建数据库的示例代码: ```c++ #include <windows.h> #include <sqlext.h> int main() { // 声明ODBC相关变量 SQLHENV hEnv; SQLHDBC hDbc; SQLRETURN ret; // 初始化ODBC环境 ret = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &hEnv); if (ret != SQL_SUCCESS && ret != SQL_SUCCESS_WITH_INFO) { // 初始化失败 return 1; } ret = SQLSetEnvAttr(hEnv, SQL_ATTR_ODBC_VERSION, (SQLPOINTER)SQL_OV_ODBC3, 0); if (ret != SQL_SUCCESS && ret != SQL_SUCCESS_WITH_INFO) { // 设置版本失败 SQLFreeHandle(SQL_HANDLE_ENV, hEnv); return 1; } // 分配数据库连接句柄 ret = SQLAllocHandle(SQL_HANDLE_DBC, hEnv, &hDbc); if (ret != SQL_SUCCESS && ret != SQL_SUCCESS_WITH_INFO) { // 分配失败 SQLFreeHandle(SQL_HANDLE_ENV, hEnv); return 1; } // 连接到数据库 ret = SQLConnect(hDbc, (SQLCHAR*)"datasource_name", SQL_NTS, (SQLCHAR*)"username", SQL_NTS, (SQLCHAR*)"password", SQL_NTS); if (ret != SQL_SUCCESS && ret != SQL_SUCCESS_WITH_INFO) { // 连接失败 SQLFreeHandle(SQL_HANDLE_DBC, hDbc); SQLFreeHandle(SQL_HANDLE_ENV, hEnv); return 1; } // 创建数据库 ret = SQLExecDirect(hDbc, (SQLCHAR*)"CREATE DATABASE database_name", SQL_NTS); if (ret != SQL_SUCCESS && ret != SQL_SUCCESS_WITH_INFO) { // 创建失败 SQLDisconnect(hDbc); SQLFreeHandle(SQL_HANDLE_DBC, hDbc); SQLFreeHandle(SQL_HANDLE_ENV, hEnv); return 1; } // 释放资源 SQLDisconnect(hDbc); SQLFreeHandle(SQL_HANDLE_DBC, hDbc); SQLFreeHandle(SQL_HANDLE_ENV, hEnv); return 0; } ``` 请注意,上面的代码只是一个简单的示例,实际使用时还需要根据具体的DBMS和API进行修改。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值