我用MFC做了一个对话框,确定按钮的click事件中的一段代码是用win32 api做的,代码如下:void CchangeDlg::OnBnClickedOk(){// TODO: 在此添加控件通知处理程序代码if (str_text!="")//MessageBox(_T("读取数据"));// Register the window classWNDCLASSEX wc = { sizeof(WNDCLASSEX), CS_CLASSDC, MsgProc, 0L, 0L, GetModuleHandle(NULL), NULL, NULL, NULL, NULL,"D3D Tutorial", NULL };RegisterClassEx( &wc );// Create the application's windowHWND hWnd = CreateWindow( "D3D Tutorial", "D3D Tutorial 3ds Rendering", WS_OVERLAPPEDWINDOW, 100, 100, 300, 300,NULL, NULL, wc.hInstance, NULL );// Initialize Direct3Dif( SUCCEEDED( InitD3D( hWnd ) ) ){ // Create the scene geometryif( SUCCEEDED( InitGeometry() ) ){// Show the windowShowWindow( hWnd, SW_SHOWDEFAULT );UpdateWindow( hWnd );// Enter the message loopMSG msg; ZeroMemory( &msg, sizeof(msg) );while( msg.message!=WM_QUIT ){if( PeekMessage( &msg, NULL, 0U, 0U, PM_REMOVE ) ){TranslateMessage( &msg );DispatchMessage( &msg );}elseRender();}}}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等类的定义。我在头文件中加了这些头文件还是这些报错。
2 回答
汪汪一只猫
TA贡献1898条经验 获得超8个赞
小样搞笑了吧?这怎么可能是一个错误呢?你的错误很多呀!
先看wc,前面的语句表明了是if(XXX)才定义wc,那如果if不成立,你后面还能用wc吗?对后面的语句,显然wc是没有定义过的。
CWnd::ShowWindow()
CWnd::UpdateWindow()
这说明你调用的根本不是API的函数;而是CWnd窗口类的成员函数--即MFC封装的类。
正确的格式是
::ShowWindow()
::UpdateWindow()
API的函数可以看成是全局函数,需要增加名字空间运算符::来调用。。你需要告诉编译器你所调用的是API的函数及全局变量,而不是MFC的。
下面的错误都是些语法错误自己改啦!
犯罪嫌疑人X
TA贡献2080条经验 获得超4个赞
可以用 winapi,没有影响。是不是你加载头文件时候写错了?
比如#include "xxxx.h" 你写成了 <xxxx.h>?
或者头文件没放到本目录下?
- 2 回答
- 0 关注
- 221 浏览
添加回答
举报
0/150
提交
取消