有个有关问题想问问大家 关于VS2012和VC++6.0 ?
有个问题想问问大家 关于VS2012和VC++6.0 ???
是这样的 我是一个菜鸟 刚学 VC++编程
现在用的是VC++6.0 因为我看的视频教程就是用的这个编译器 而且课程也是围绕着这个讲的
但是我今天安装了一个VS2012我看到同样的一个简单的win32程序,就比如是显示一个窗口,在VC++6.0下面就是
那样的几个步骤,注册一个窗口类,创建一个窗口,显示窗口,消息循环处理。
但是我发现在VS2012下面的同样实现这个东西,代码好像多了很多 头文件也多了很多
我想问的问题就是我现在还是用vc++6.0来学些windows编程 看视频教程和 看【windows程序设计第五版】
这些书 没有过时吧 因为我是菜鸟才会问出这样的 问题 大家不要笑话我 刚学。。。。
就怕在VC++6.0下面学的在Vs2012下面已经改变了
比如在VC++6.0下面显示一个窗口:
但是在Vs2012下面:
------解决方案--------------------
两个代码差不多啊
------解决方案--------------------
其实都是一样的,只是写法和结构不同。
最基本的程序入口点winmain函数
注册窗口类RegisterClass
窗口过程WndProc
创建窗口CreateWindow
显示窗口ShowWindow
消息循环
while (GetMessage(&msg, NULL, 0, 0))
{
if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}
都是一样的。
这些API20多年来都没变过。不过时。
继续学吧,等你把他们都搞懂了,就知道了,都一样。
------解决方案--------------------
现在我们单位是有一堆特稳定的老程序,用的是vc6.0,调试也用这个。。自己新写的程序就用vs2010。
越高版本加的代码越多,不利于学习。既然现在的学习资料都是6.0,就先用6.0吧。
是这样的 我是一个菜鸟 刚学 VC++编程
现在用的是VC++6.0 因为我看的视频教程就是用的这个编译器 而且课程也是围绕着这个讲的
但是我今天安装了一个VS2012我看到同样的一个简单的win32程序,就比如是显示一个窗口,在VC++6.0下面就是
那样的几个步骤,注册一个窗口类,创建一个窗口,显示窗口,消息循环处理。
但是我发现在VS2012下面的同样实现这个东西,代码好像多了很多 头文件也多了很多
我想问的问题就是我现在还是用vc++6.0来学些windows编程 看视频教程和 看【windows程序设计第五版】
这些书 没有过时吧 因为我是菜鸟才会问出这样的 问题 大家不要笑话我 刚学。。。。
就怕在VC++6.0下面学的在Vs2012下面已经改变了
比如在VC++6.0下面显示一个窗口:
// WinCreate.cpp : Defines the entry point for the application.
//
#include "stdafx.h"
HINSTANCE g_hInst = NULL;
LRESULT CALLBACK WndProc( HWND hWnd,
UINT nMsg,
WPARAM wParam,
LPARAM lParam )
{
switch( nMsg )
{
case WM_DESTROY:
PostQuitMessage( 0 );
return 0;
}
return DefWindowProc( hWnd, nMsg,
wParam, lParam );
}
void Message( )
{
MSG msg = { 0 };
while( GetMessage( &msg, NULL, 0, 0 ) )
{
DispatchMessage( &msg );
}
}
void DisplayWnd( HWND hWnd )
{
ShowWindow( hWnd, SW_SHOW );
UpdateWindow( hWnd );
}
HWND CreateWnd( LPSTR pszClassName )
{
HWND hWnd = CreateWindowEx(
0,
pszClassName,
"MyWnd",
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
NULL,NULL,g_hInst,NULL );
return hWnd;
}
BOOL RegisterWnd( LPSTR pszClassName )
{
WNDCLASSEX wce = { 0 };
wce.cbSize = sizeof( wce );
wce.style = CS_HREDRAW|CS_VREDRAW;
wce.cbClsExtra = 0;
wce.cbWndExtra = 0;
wce.lpfnWndProc = WndProc;
wce.hIcon = NULL;
wce.hCursor = NULL;
wce.hbrBackground = HBRUSH( COLOR_WINDOW );
wce.hInstance = g_hInst;
wce.lpszClassName = pszClassName;
wce.lpszMenuName = NULL;
wce.hIconSm = NULL;
ATOM nAtom = RegisterClassEx( &wce );
if( 0 == nAtom )
{
return FALSE;
}
return TRUE;
}
int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
g_hInst = hInstance;
RegisterWnd( "MyWnd" );
HWND hWnd = CreateWnd( "MyWnd" );
DisplayWnd( hWnd );
Message( );
return 0;
}
但是在Vs2012下面:
Vs2012
VC++6.0
------解决方案--------------------
两个代码差不多啊
------解决方案--------------------
其实都是一样的,只是写法和结构不同。
最基本的程序入口点winmain函数
注册窗口类RegisterClass
窗口过程WndProc
创建窗口CreateWindow
显示窗口ShowWindow
消息循环
while (GetMessage(&msg, NULL, 0, 0))
{
if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}
都是一样的。
这些API20多年来都没变过。不过时。
继续学吧,等你把他们都搞懂了,就知道了,都一样。
------解决方案--------------------
现在我们单位是有一堆特稳定的老程序,用的是vc6.0,调试也用这个。。自己新写的程序就用vs2010。
越高版本加的代码越多,不利于学习。既然现在的学习资料都是6.0,就先用6.0吧。