是不是在MFC中不能用win32 api程序啊?我还是想用这个程序的,哪位高手告诉我如何改正?

我用MFC做了一个对话框,确定按钮的click事件中的一段代码是用win32 api做的,代码如下:
void CchangeDlg::OnBnClickedOk()
{
// TODO: 在此添加控件通知处理程序代码
if (str_text!="")
//MessageBox(_T("读取数据"));
// Register the window class
WNDCLASSEX wc = { sizeof(WNDCLASSEX), CS_CLASSDC, MsgProc, 0L, 0L, 
GetModuleHandle(NULL), NULL, NULL, NULL, NULL,
"D3D Tutorial", NULL };
RegisterClassEx( &wc );

// Create the application's window
HWND hWnd = CreateWindow( "D3D Tutorial", "D3D Tutorial 3ds Rendering", 
WS_OVERLAPPEDWINDOW, 100, 100, 300, 300,
NULL, NULL, wc.hInstance, NULL );

// Initialize Direct3D
if( SUCCEEDED( InitD3D( hWnd ) ) )

// Create the scene geometry
if( SUCCEEDED( InitGeometry() ) )
{
// Show the window
ShowWindow( hWnd, SW_SHOWDEFAULT );
UpdateWindow( hWnd );

// Enter the message loop
MSG msg; 
ZeroMemory( &msg, sizeof(msg) );
while( msg.message!=WM_QUIT )
{
if( PeekMessage( &msg, NULL, 0U, 0U, PM_REMOVE ) )
{
TranslateMessage( &msg );
DispatchMessage( &msg );
}
else
Render();
}
}
}

UnregisterClass( "D3D Tutorial", wc.hInstance );
//return 0;
else
{
MessageBox(_T("请输入文件路径"));
OnOK();
}

}
运行报错:
error C3861: “timeGetTime”: 找不到标识符
error C2065: “wc”: 未声明的标识符
error C2228: “.hInstance”的左边必须有类/结构/联合类型是“'unknown-type'”
error C2660: “CWnd::ShowWindow”: 函数不接受 2 个参数
error C2660: “CWnd::UpdateWindow”: 函数不接受 1 个参数
error C2228: “.hInstance”的左边必须有类/结构/联合类型是“'unknown-type'”
error C2181: 没有匹配 if 的非法 else 
其实这些错误都是一个原因造成的,就是程序没有识别出在mmsystem.h中的timeGetTime定义和winuster.h中的WNDCLASSEX等类的定义。我在头文件中加了这些头文件还是这些报错。

翻翻过去那场雪
浏览 228回答 2
2回答

汪汪一只猫

小样搞笑了吧?这怎么可能是一个错误呢?你的错误很多呀!先看wc,前面的语句表明了是if(XXX)才定义wc,那如果if不成立,你后面还能用wc吗?对后面的语句,显然wc是没有定义过的。CWnd::ShowWindow()CWnd::UpdateWindow()这说明你调用的根本不是API的函数;而是CWnd窗口类的成员函数--即MFC封装的类。正确的格式是::ShowWindow()::UpdateWindow()API的函数可以看成是全局函数,需要增加名字空间运算符::来调用。。你需要告诉编译器你所调用的是API的函数及全局变量,而不是MFC的。下面的错误都是些语法错误自己改啦!

犯罪嫌疑人X

可以用 winapi,没有影响。是不是你加载头文件时候写错了?比如#include "xxxx.h" 你写成了 <xxxx.h>?或者头文件没放到本目录下?
打开App,查看更多内容
随时随地看视频慕课网APP