再次深入理解win32控制台
来源:互联网 发布:程序员的昵称 编辑:程序博客网 时间:2024/05/17 07:14
今天,从网上查看代码,测试功能实现,遇到了不解的问题,
最后经过摸索,
算是基本解决问题,但是是否是这样的真正原因还不确定,
自己理解:
win32项目,就是可以显示控制台和窗口两种显示,因此它版本的项目
里面是可以或者说包涵着windows的函数。
win32控制台,就是只是显示控制台界面,其他的窗口可以在这个基础之上出来。
但是他里面是不包涵部分的windows函数的,通常报错如下,
错误 1 error LNK2019: 无法解析的外部符号 _main,该符号在函数 ___tmainCRTStartup 中被引用 D:\test\PushDllTest\PushDllTest\LIBCMT.lib(crt0.obj)
错误 2 error LNK1120: 1 个无法解析的外部命令 D:\test\PushDllTest\Debug\PushDllTest.exe 1
解决办法:
第一种,属性->连接器->系统->子系统,改为窗口
第二种,新建工程,选择win32项目
下面代码,仅用于测试,便于理解
//// PushDllTest.cpp : 定义控制台应用程序的入口点。////////#include "stdafx.h"//////int _tmain(int argc, _TCHAR* argv[])//{//////return 0;//}//#include<Windows.h>HINSTANCE ghInst = NULL;char *szAppName = "SimpleAPI";char *szAppTitle = "用API编制的一个简单的窗口";LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);int WINAPI WinMain(HINSTANCE, HINSTANCE,LPSTR,int);LRESULT CALLBACK WndProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM IParam){ char * msgCreate = "收到WM_CREATE消息!"; char *msgCaption = "提示消息"; char *msgDestroy = "收到WM_DESTROY消息"; char *msgLBTN = "鼠标左键被按下"; switch(message) { case WM_CREATE: MessageBox(GetFocus(),msgCreate,msgCaption,MB_OK|MB_ICONINFORMATION); break; case WM_LBUTTONDOWN: MessageBeep(MB_ICONINFORMATION); MessageBox(GetFocus(),msgDestroy,msgCaption,MB_OK|MB_ICONINFORMATION); break; case WM_DESTROY: MessageBox(GetFocus(),msgDestroy,msgCaption,MB_OK|MB_ICONINFORMATION); PostQuitMessage(0); break; default:return DefWindowProc(hwnd,message,wParam,IParam); } return FALSE;}int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR IpCmdLine,int nCmdShow){ WNDCLASS wc; MSG msg; HWND ghWnd = NULL; ghInst = hInstance; wc.style = CS_HREDRAW|CS_VREDRAW; wc.lpfnWndProc = WndProc; wc.cbClsExtra = 0; wc.cbWndExtra = 0; wc.hIcon = LoadIcon(NULL,IDI_APPLICATION); wc.hInstance = hInstance; wc.hCursor = LoadCursor(NULL,IDC_ARROW); wc.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH); wc.lpszClassName = szAppName; wc.lpszMenuName = NULL ; RegisterClass(&wc); ghWnd = CreateWindow(szAppName,szAppTitle,WS_OVERLAPPEDWINDOW,0,0,400,350,NULL,NULL,hInstance,NULL); if(NULL == ghWnd) return 0; ShowWindow(ghWnd,nCmdShow); UpdateWindow(ghWnd); while(GetMessage(&msg,NULL,0,0)) { TranslateMessage(&msg); DispatchMessage(&msg); } return msg.wParam;}
- 再次深入理解win32控制台
- 再次深入理解IRP
- 深入理解控制台程序
- 深入理解控制台程序
- 深入理解控制台程序
- mybatis的再次深入理解
- 再次深入理解闭包
- 深入理解win32消息机制
- 深入理解 WIN32 PE 文件格式
- win32控制台
- win32控制台
- 再次深入理解TCP网络编程中的send和recv
- 再次深入理解TCP网络编程中的send和recv
- 再次深入理解TCP网络编程中的send和recv
- 再次深入理解TCP网络编程中的send和recv
- RAD后面的故事--深入理解控制台程序I
- RAD后面的故事--深入理解控制台程序II
- 深入理解Win32结构化异常处理(二)
- Ant系统构建工具的使用
- 输出2-1000的完数
- 这个数是有符号的还是无符号的?
- Linux下防止进程使用swap及防止OOM机制导致进程被kill掉
- 中国民族下拉框
- 再次深入理解win32控制台
- 金山笔试题 C++
- 个人配置
- 旋转屏幕重新加载Activity
- C#形参,实参,值传递参数,引用传递参数,输出参数,参数数组的学习(一)
- 小执着的伤感空间日志:童话般虚幻、却没有童话般的结局
- C 可变参数宏
- 教你用grub4dos定制自己的启动U盘
- 牵手是伤,放手是痛:伤感QQ空间日志