c与cpp,在编译上有区别吗?深入浅出MFC上的实例generic.c为何改成cpp无法编译呢?
我刚学习 "深入浅出 MFC",刚才练习整本书中的第一个示例,就是窗口的注册与创建.
书上的源码 generic.c 的后缀是 c,但是我用 vc6 建的工程,自动把后缀保存成 generic.cpp了.
最后就是无法通过编译.最好我将 generic.cpp 改成 generic.c ,就通过编译了.
运行正常,窗口产生了.我不解.
1.c 和 cpp,在编译上有区别吗?2.vc6建工程,如何创建后缀是 C 的源文件呢?好像只要新写的代码,保存时就存成 .cpp 了.除非加入一个 C 后缀的文件.3.深入浅出的第一个示例,用vc6来练习的话,要建立什么工程呀?
好像不管什么工程,源文件,都自动保存成 CPP 呀.
我刚学习 "深入浅出 MFC",刚才练习整本书中的第一个示例,就是窗口的注册与创建.
书上的源码 generic.c 的后缀是 c,但是我用 vc6 建的工程,自动把后缀保存成 generic.cpp了.
最后就是无法通过编译.最好我将 generic.cpp 改成 generic.c ,就通过编译了.
运行正常,窗口产生了.我不解.
1.c 和 cpp,在编译上有区别吗?2.vc6建工程,如何创建后缀是 C 的源文件呢?好像只要新写的代码,保存时就存成 .cpp 了.除非加入一个 C 后缀的文件.3.深入浅出的第一个示例,用vc6来练习的话,要建立什么工程呀?
好像不管什么工程,源文件,都自动保存成 CPP 呀.
解决方案 »
- 如何理解单词和以下音素的关系?
- VS2008的不能正确设置环境变量
- 关于MFC使用ATL的问题!请高手进来看看!
- Excel Automation里application属性的设置问题
- 购买类似QQ界面的界面库大家给掺和掺和那种比较好(进者有分)。
- 急问:怎么实现动态移动图形?
- 版主求救importlib("C:\Program Files\Common Files\System\ado\msado15.dll");,为何不让导入?
- !!请问各位有没有将BMP转换转换成TIFF文件的C,或VC的源代码呀?散分100!
- 关于check box的一个白痴问题,请高手速进!!!:)
- 我有了TTS的安装包后怎么在程序中应用呢?是不是要有TTS的接口函数..
- 关于基于对话框程序的重绘问题
- 如何用MFC改变一个以画好的矩形的颜色,大小啊?
#include "resource.h"
#include "generic.h"HINSTANCE _hInst;
HWND _hWnd;char _szAppName[]="Generic";
char _szTitle[]="Generic Sample Sample Application";int CALLBACK WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,
LPSTR lpCmdLine,int nCmdShow)
{
MSG msg;
UNREFERENCED_PARAMETER(lpCmdLine);
if (!hPrevInstance)
if (!InitApplication(hInstance))
return (FALSE);
if (!InitInstance(hInstance,nCmdShow))
return (FALSE); while (GetMessage(&msg,NULL,0,0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
} return (msg.wParam);
}BOOL InitApplication(HINSTANCE hInstance)
{
WNDCLASS wc; wc.style = CS_HREDRAW | CS_VREDRAW;
wc.lpfnWndProc = (WNDPROC)WndProc;
wc.cbClsExtra = 0;
wc.cbWndExtra = 0;
wc.hInstance = hInstance;
wc.hIcon = LoadIcon(hInstance, "jjhouricon");
wc.hCursor = LoadCursor(NULL, IDC_ARROW);
wc.hbrBackground = GetStockObject(WHITE_BRUSH);
wc.lpszMenuName = "GenericMenu";
wc.lpszClassName = _szAppName; return (RegisterClass(&wc));
}
BOOL InitInstance(HINSTANCE hInstance,int nCmdShow)
{ //_hInst=hInstabce;
_hInst = hInstance;
_hWnd=CreateWindow(
_szAppName,
_szTitle,
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
NULL,
NULL,
hInstance,
NULL
);
if (!_hWnd)
return (FALSE); ShowWindow(_hWnd,nCmdShow);
UpdateWindow(_hWnd);
return (TRUE);
}LRESULT CALLBACK WndProc(HWND hWnd,UINT message,WPARAM wParam,LPARAM lParam)
{
int wmId,wmEvent;
switch (message)
{
case WM_COMMAND:
wmId=LOWORD(wParam);
wmEvent=HIWORD(wParam); switch (wmId)
{
case IDM_ABOUT:
DialogBox(_hInst,
"AboutBox",
hWnd,
(DLGPROC)About
);
break;
case IDM_EXIT:
DestroyWindow(hWnd);
break;
default:
return(DefWindowProc(hWnd,message,wParam,lParam));
} break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return (DefWindowProc(hWnd,message,wParam,lParam));
}
return (0);
}LRESULT CALLBACK About(HWND hDlg,UINT message,WPARAM wParam,LPARAM lParam)
{
UNREFERENCED_PARAMETER(lParam);
switch (message)
{
case WM_INITDIALOG:
return (TRUE);
case WM_COMMAND:
if (LOWORD(wParam)==IDOK || LOWORD(wParam)==IDCANCEL)
{
EndDialog(hDlg,TRUE);
return(TRUE);
}
break;
}
return (FALSE);
}
BOOL InitInstance(HANDLE,int);
LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);
LRESULT CALLBACK About(HWND,UINT,WPARAM,LPARAM);
resource.h//---------------------------------------------------------------------
// resource.h
//---------------------------------------------------------------------
#define IDM_NEW 40001
#define IDM_OPEN 40002
#define IDM_SAVE 40003
#define IDM_SAVEAS 40004
#define IDM_PRINT 40005
#define IDM_PRINTSETUP 40006
#define IDM_EXIT 40007
#define IDM_UNDO 40008
#define IDM_CUT 40009
#define IDM_COPY 40010
#define IDM_PASTE 40011
#define IDM_LINK 40012
#define IDM_LINKS 40013
#define IDM_HELPCONTENTS 40014
#define IDM_HELPSEARCH 40015
#define IDM_HELPHELP 40016
#define IDM_ABOUT 40017
// generic.rc
//---------------------------------------------------------------------
#include "windows.h"
#include "resource.h"jjhouricon ICON DISCARDABLE "jjhour.ico"GenericMenu MENU DISCARDABLE
BEGIN
POPUP "&File"
BEGIN
MENUITEM "&New", IDM_NEW, GRAYED
MENUITEM "&Open...", IDM_OPEN, GRAYED
MENUITEM "&Save", IDM_SAVE, GRAYED
MENUITEM "Save &As...", IDM_SAVEAS, GRAYED
MENUITEM SEPARATOR
MENUITEM "&Print...", IDM_PRINT, GRAYED
MENUITEM "P&rint Setup...", IDM_PRINTSETUP, GRAYED
MENUITEM SEPARATOR
MENUITEM "E&xit", IDM_EXIT
END
POPUP "&Edit"
BEGIN
MENUITEM "&Undo\tCtrl+Z", IDM_UNDO, GRAYED
MENUITEM SEPARATOR
MENUITEM "Cu&t\tCtrl+X", IDM_CUT, GRAYED
MENUITEM "&Copy\tCtrl+C", IDM_COPY, GRAYED
MENUITEM "&Paste\tCtrl+V", IDM_PASTE, GRAYED
MENUITEM "Paste &Link", IDM_LINK, GRAYED
MENUITEM SEPARATOR
MENUITEM "Lin&ks...", IDM_LINKS, GRAYED
END
POPUP "&Help"
BEGIN
MENUITEM "&Contents", IDM_HELPCONTENTS, GRAYED
MENUITEM "&Search for Help On...", IDM_HELPSEARCH, GRAYED
MENUITEM "&How to Use Help", IDM_HELPHELP, GRAYED
MENUITEM SEPARATOR
MENUITEM "&About Generic...", IDM_ABOUT
END
ENDAboutBox DIALOG DISCARDABLE 22, 17, 144, 75
STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
CAPTION "About Generic"
BEGIN
CTEXT "Windows 95", -1,0, 5,144,8
CTEXT "Generic Application",-1,0,14,144,8
CTEXT "Version 1.0", -1,0,34,144,8
DEFPUSHBUTTON "OK", IDOK,53,59,32,14,WS_GROUP
END