vc++报错问题。

yibeier 2009-04-07 02:44:55
我用MFC做了一个对话框,确定按钮的click事件中的一段代码是用win32 api做的,代码如下:
void CchangeDlg::OnBnClickedOk()
{
// TODO: 在此添加控件通知处理程序代码
if (str_text!="")
// 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 );
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等类的定义。我在头文件中加了这些头文件还是这些报错。是不是在MFC中不能用win32 api程序啊?我还是想用这个程序的,哪位高手告诉我如何改正?(我用的是vs2005,是不是要做一些属性设置?麻烦说明详细点)
...全文
405 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
nirToPeking 2011-03-09
  • 打赏
  • 举报
回复
你新建项目时候注意,要建一个空项目,VS默认是非空项目,包含像stdafx.h这样的文件。
我是这么杀虫的,但是不知道原理是怎么回事。你可以试一试,重建一个新的空项目,把原来文件导进去。
必成桂 2009-04-07
  • 打赏
  • 举报
回复
需要包含 Windows.h头文件.
yibeier 2009-04-07
  • 打赏
  • 举报
回复
写错了。5楼的大侠,我现在经过修改调试后只剩一个错误了:
error C3861: “timeGetTime”: 找不到标识符

能不能帮我解决啊?
还有高手能帮帮我啊?
yibeier 2009-04-07
  • 打赏
  • 举报
回复
楼上的大侠,你说的这个原因我知道,但是怎么该啊?我现在经过修改调试后只剩三个错误了:
error C3861: “timeGetTime”: 找不到标识符
error C2660: “CWnd::ShowWindow”: 函数不接受 2 个参数
error C2660: “CWnd::UpdateWindow”: 函数不接受 1 个参数

能不能帮我解决啊?
mengde007 2009-04-07
  • 打赏
  • 举报
回复
error C2660: “CWnd::ShowWindow”: 函数不接受 2 个参数
error C2660: “CWnd::UpdateWindow”: 函数不接受 1 个参数
之所以出现这样的情况,是因为编译器,分不清这是系统的API函数还是MFC库函数,因为他们的函数名可能相同,而参数不同
mengde007 2009-04-07
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 yibeier 的回复:]
楼上的详细点啊。具体怎么加?
[/Quote]
::ShowWindow( hWnd, SW_SHOWDEFAULT ); 就这样,在API函数前加俩个冒号
Dinelgua 2009-04-07
  • 打赏
  • 举报
回复
直接再cpp中把 没找到的类型 原型再开头写出来看看
yibeier 2009-04-07
  • 打赏
  • 举报
回复
楼上的详细点啊。具体怎么加?
lzr4304061988012 2009-04-07
  • 打赏
  • 举报
回复
如果在MFC中用API,最好前面加::,避免与MFC某个类的成员函数混淆.

65,210

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧