主题:[讨论]在VC下的第一个API(回复都有分)
以下是在VC下编的第一个API,因为对VC环境不熟悉,所以有些问题,希望大虾们帮忙看看:
步骤1:新建->工程->Win32 Application,工程名为wnd(是不是API程序都要在这种设置下进行?)
步骤2:在随后出现的对话框中选择了A simple Win32 application选项(不知道选哪一个,随便选的)
步骤3:在给出的wnd.cpp文件中的
int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
函数内添加了以下代码:
MSG msg;
if (!hPrevInstance)
if(!InitApplication(hInstance)) return FALSE;
if (!InitInstance(hInstance,ncmdShow)) return FALSE;
while(GetMessage(&msg,NULL,NULL,NULL))
{TranslateMessage(&msg);
DispatchMessage(&msg);
步骤4:在给出的StdAfx.cpp文件中添加了以下代码:
BOOL InitApplication(HANDLE hInstance)
{WNDCLASS w;
w.style=NULL;
w.lpfnWndProc=WndProc;
w.cbClsExtra=0;
w.cbWndExtra=0;
w.hInstance=hInstance;
w.hIcon=LoadIcon(NULL,IDI_APPLICATION);
w.hCursor=LoadCursor(NULL,IDC_ARROW);
w.hbrbackground=GetStockObject(WHITE_BRUSH);
w.lpszMenuName=NULL;
w.lpsaClassName="Simple";
return (RegisterClass(&w));}
BOOL InitInstance(HANDLE hInstance,int nCmdShow)
{HWND hWnd;
hWnd=CreateWindow("Simple",
"Simple Example",
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;}
long FAR PASCAL WndProc(HWND hWnd,unsigned message,WORD wParam,LONG lParam)
{switch(message)
{case WM_DESTORY:PostQuitMessage(0);break;
default:return DefWindowProc(hWnd,message,wParam,lParam);}
return NULL;}
步骤5:编译wnd.cpp文件
经过上述步骤编译出现问题:
fatal error C1083: Cannot open precompiled header file: 'Debug/wnd.pch': No such file or directory
Error executing cl.exe.
wnd.obj - 1 error(s), 0 warning(s)
请高手们指正我的错误,非常感激~~~~~
[em18]
步骤1:新建->工程->Win32 Application,工程名为wnd(是不是API程序都要在这种设置下进行?)
步骤2:在随后出现的对话框中选择了A simple Win32 application选项(不知道选哪一个,随便选的)
步骤3:在给出的wnd.cpp文件中的
int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
函数内添加了以下代码:
MSG msg;
if (!hPrevInstance)
if(!InitApplication(hInstance)) return FALSE;
if (!InitInstance(hInstance,ncmdShow)) return FALSE;
while(GetMessage(&msg,NULL,NULL,NULL))
{TranslateMessage(&msg);
DispatchMessage(&msg);
步骤4:在给出的StdAfx.cpp文件中添加了以下代码:
BOOL InitApplication(HANDLE hInstance)
{WNDCLASS w;
w.style=NULL;
w.lpfnWndProc=WndProc;
w.cbClsExtra=0;
w.cbWndExtra=0;
w.hInstance=hInstance;
w.hIcon=LoadIcon(NULL,IDI_APPLICATION);
w.hCursor=LoadCursor(NULL,IDC_ARROW);
w.hbrbackground=GetStockObject(WHITE_BRUSH);
w.lpszMenuName=NULL;
w.lpsaClassName="Simple";
return (RegisterClass(&w));}
BOOL InitInstance(HANDLE hInstance,int nCmdShow)
{HWND hWnd;
hWnd=CreateWindow("Simple",
"Simple Example",
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;}
long FAR PASCAL WndProc(HWND hWnd,unsigned message,WORD wParam,LONG lParam)
{switch(message)
{case WM_DESTORY:PostQuitMessage(0);break;
default:return DefWindowProc(hWnd,message,wParam,lParam);}
return NULL;}
步骤5:编译wnd.cpp文件
经过上述步骤编译出现问题:
fatal error C1083: Cannot open precompiled header file: 'Debug/wnd.pch': No such file or directory
Error executing cl.exe.
wnd.obj - 1 error(s), 0 warning(s)
请高手们指正我的错误,非常感激~~~~~
[em18]