使用了未定义类型“DSBUFFERDESC”

kbcsy 2009-10-26 07:43:00
DSBUFFERDESC 这个结构体为什么放在OnInitDialog()这个函数中时可以直接使用,为什么作为全局变量时提示“使用了未定议的类型“DSBUFFERDESC”

如在OnInitDialog()里定义DSBUFFERDESC *dsbf=(DSBUFFERDESC *)malloc(sizeof(DSBUFFERDESC));时,下列代码可用

dsbf->dwSize=sizeof(DSBUFFERDESC);
dsbf->dwFlags=DSBCAPS_CTRLVOLUME|DSBCAPS_CTRLPOSITIONNOTIFY ;
dsbf->dwBufferBytes=wavfmat->nAvgBytesPerSec*300;
dsbf->dwReserved=0;
dsbf->lpwfxFormat=wavfmat;
dsbf->guid3DAlgorithm=GUID_NULL;
而在OnInitDialog外使用时(也不知道叫不叫全局..)却提示上面的错误,为什么呢?
...全文
231 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
kbcsy 2009-10-27
  • 打赏
  • 举报
回复
如果全局定义结构体变量,再使用这量名的话就会提示变量重定义
这是为什么呢,谁知道分就给谁了..
kbcsy 2009-10-27
  • 打赏
  • 举报
回复
哦,发现问题了..
好像全局只能定义结构体变量,但不能使用,必须得在函数里使用..
MoXiaoRab 2009-10-27
  • 打赏
  • 举报
回复
在函数体外,文件开头,也就是在声明头文件后用同样的语句就不行
===============
哪个头文件?贴上来看看
kbcsy 2009-10-27
  • 打赏
  • 举报
回复
无满意回答,谢谢各位,结贴了!
kbcsy 2009-10-26
  • 打赏
  • 举报
回复
zhijiding
kbcsy 2009-10-26
  • 打赏
  • 举报
回复
这个结构体本来是用来作IDirectSound::CreatSoundBuffer()参数的
菜鸟,希望高手指教..
kbcsy 2009-10-26
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 tr0j4n 的回复:]
要看你具体的工程代码怎么搞的了
[/Quote]
一个基于对话框的工程voice,我在生成的voiceDlg.cpp的 CvoiceDlg::OnInitDialog()中用DSBUFFERDESC *dsbf=(DSBUFFERDESC *)malloc(sizeof(DSBUFFERDESC))新建的结构体变量指针dsbf能用,但在函数体外,文件开头,也就是在声明头文件后用同样的语句就不行,提示:使用了未定义类型“DSBUFFERDESC”
MoXiaoRab 2009-10-26
  • 打赏
  • 举报
回复
要看你具体的工程代码怎么搞的了
kbcsy 2009-10-26
  • 打赏
  • 举报
回复
真的头晕乎,高手路过请留墨啊
kbcsy 2009-10-26
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 gothic_girl 的回复:]
h文件应该只是定义结构,不可能去定义变量的

这个变量应该iachongxin定义
[/Quote]
7号好急啊,chongxin应该是“重新”吧,还多了两个字母ia,难道是加密的..汗
kbcsy 2009-10-26
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 dirdirdir3 的回复:]
重新编译一次(全部编译).........
[/Quote]
就是编绎不过,提示:使用了未定义类型“DSBUFFERDESC”啊
可不明白为什么在同一个CPP文件中的一个函数中就能使用呢..
Gothic_girl 2009-10-26
  • 打赏
  • 举报
回复
h文件应该只是定义结构,不可能去定义变量的

这个变量应该iachongxin定义
dirdirdir3 2009-10-26
  • 打赏
  • 举报
回复
重新编译一次(全部编译).........
kbcsy 2009-10-26
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 tr0j4n 的回复:]
我估计你在外面用的位置不对,没有处于头文件包含之下
[/Quote]
这个结构我查了下,需要包含#include<dsound.h>
我的cpp文件包含了这个头文件,头文件不是整个cpp都能用吗?
MoXiaoRab 2009-10-26
  • 打赏
  • 举报
回复
我估计你在外面用的位置不对,没有处于头文件包含之下
kbcsy 2009-10-26
  • 打赏
  • 举报
回复
我就是在OnInitDialog()函数外面直接定义了DSBUFFERDESC *dsbf,结果点不出来东西..如果在里面定义就可以点出来该结构的成员..按理说这个结构既然是系统定义的,哪应该在哪里都可以用呀!呵呵,我对mfc的结构不太懂,还请指教..
gg606 2009-10-26
  • 打赏
  • 举报
回复
你在外面怎么用的?
kbcsy 2009-10-26
  • 打赏
  • 举报
回复
自已顶

16,551

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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