`
大象06
  • 浏览: 119840 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

关于一个调用PalySound方法播放声音的错误

    博客分类:
  • VC
阅读更多

 最近在抽空学习windows编程,跑下面代码的时候遇到了一个错误。

代码如下:

#include <windows.h>

LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);

int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR szCmdLine,int iCmdShow)
{
	static TCHAR szAppName[]=TEXT("HelloWin");
	HWND hwnd;
	MSG msg;
	WNDCLASS wndclass;
	wndclass.style=CS_HREDRAW|CS_VREDRAW;
	wndclass.lpfnWndProc=WndProc;
	wndclass.cbClsExtra=0;
	wndclass.cbWndExtra=0;
	wndclass.hInstance=hInstance;
	wndclass.hIcon=LoadIcon(NULL,IDI_APPLICATION);
	wndclass.hCursor=LoadCursor(NULL,IDC_ARROW);
	wndclass.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);
	wndclass.lpszMenuName=NULL;
	wndclass.lpszClassName=szAppName;

	if(!RegisterClass(&wndclass))
	{
		MessageBox(NULL,TEXT("蛋疼啊!"),szAppName,MB_ICONERROR);
		return 0;
	}
	hwnd=CreateWindow(szAppName,TEXT("还是蛋疼啊!"),
		WS_OVERLAPPEDWINDOW,
		CW_USEDEFAULT,
		CW_USEDEFAULT,
		CW_USEDEFAULT,
		CW_USEDEFAULT,
		NULL,
		NULL,
		hInstance,
		NULL,);
	ShowWindow(hwnd,iCmdShow);
	UpdateWindow(hwnd);
	while(GetMessage(&msg,NULL,0,0))
	{
		TranslateMessage(&msg);
		DispatchMessage(&msg);
	}
	return msg.wParam;
}

LRESULT CALLBACK WndProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam)
{
	HDC hdc;
	PAINTSTRUCT ps;
	RECT rect;
	switch(message)
	{
	case WM_CREATE:
		PlaySound(TEXT("hellowind.wav"),NULL,SND_FILENAME|SND_ASYNC);
		return 0;
	case WM_PAINT:
		hdc=BeginPaint(hwnd,&ps);
		GetClientRect(hwnd,&rect);
		DrawText(hdc,TEXT("继续蛋疼!"),-1,&rect,DT_SINGLELINE|DT_CENTER|DT_VCENTER);
		EndPaint(hwnd,&ps);
		return 0;
	case WM_DESTROY:
		PostQuitMessage(0);
		return 0;
	}
	return DefWindowProc(hwnd,message,wParam,lParam);
}

 编译时没有报错,但是运行的时候会报如下错误:

--------------------Configuration: HelloWin - Win32 Debug--------------------
Linking...
HelloWin.obj : error LNK2001: unresolved external symbol __imp__PlaySoundA@12
Debug/HelloWin.exe : fatal error LNK1120: 1 unresolved externals
Error executing link.exe.

HelloWin.exe - 2 error(s), 0 warning(s)

经过仔细研究之后,发现是运行的时候少了一个lib文件,故解决方案如下:

Project   Settings-> Object/library   modules   输入   Winmm.lib

再次运行OK

分享到:
评论

相关推荐

    PB如何调用WINDOWS的API(以播放声音为例)

    接下来,我们编写一个方法来实际调用这两个API并播放声音: ```powerbuilder Procedure UserObj.uf_play_sound(string as_wave_name, integer ai_option) Begin uint lui_numdevs; lui_numdevs = ...

    C#中在一个窗体里调用另一个窗体的方法

    在C#中,窗体之间的方法调用是一个常见的需求,特别是在复杂的桌面应用程序设计中。本文将根据提供的标题、描述、标签以及部分内容,详细介绍如何在C#的一个窗体中调用另一个窗体的方法,并探讨其中涉及的技术细节。...

    C# 调用主板蜂鸣器播放声音和音乐

    C# 调用主板蜂鸣器播放声音和音乐是使用 C# 语言实现蜂鸣或者报警的一种方式。在 C# 中,可以通过四种方式来实现蜂鸣或者报警。 首先,第一种方式是使用 Beep 函数来实现蜂鸣报警。Beep 函数可以通过调用 kernel32....

    JS调用C#后台方法

    - 在新建的Web Service(.asmx)文件中,定义一个公开的方法,例如`[WebMethod] public string HelloWorld() { return "Hello, World!"; }`。`[WebMethod]`是必须的特性,表示该方法可以被Web服务调用。 2. **...

    asp.net前台调用后台方法传参数

    - `public string ButtShow(string strs)`:定义了一个公共方法`ButtShow`,接受一个字符串参数`strs`并返回原字符串。 **原理**: - 在这个例子中,`ButtShow`方法被直接嵌入到了HTML中,当页面加载时,ASP.NET...

    Arcgis 学习--COM 组件的调用返回了错误 HRESULT E_FAIL

    比如,一个常见的错误是:在调用ArcGIS COM组件时返回错误 HRESULT E_FAIL。为了更好地理解这个问题,并找到解决方法,我们需要对COM组件、错误代码以及ArcGIS的文件格式有一个全面的认识。 COM组件是软件组件模型...

    android 播放报警声音

    首先,了解Android的声音播放机制至关重要。Android系统提供了多种方式来播放音频,包括使用`MediaPlayer`类、`AudioTrack`类和`SoundPool`类等。对于播放报警声音,通常选择`MediaPlayer`,因为它易于使用且功能...

    c# winform webbrowser页面中js调用winform类方法

    除了直接调用方法外,还可以创建一个事件回调系统,使得WinForm可以监听JavaScript的某些事件。这通常通过在C#中定义一个事件,并在JavaScript中触发这个事件来实现。 5. **异步调用**: 如果C#方法需要执行耗时...

    Java播放本地声音,实现系统报警

    这个类继承自`Frame`类,并且包含了一个静态方法`AudioBox`用于播放音频。 3. **加载音频文件** - 使用`java.io.File`类加载本地磁盘上的音频文件。这里假设音频文件名为`love.wav`,并且存放在`D:\`目录下。 - ...

    easyUi弹出window窗口传值与调用父页面的方法,子页面给父页面赋值

    假设在父页面上有一个名为`updateParentData`的函数,可以在子页面中这样调用: ```javascript parent.updateParentData('子页面传递的数据'); ``` 接着,我们讨论“子页面给父页面赋值”。当子页面完成了某些操作...

    Winform中使用CefSharp和js互相调用方法

    Winform中使用CefSharp和js互相调用方法,Winform中使用CefSharp和js互相调用方法,Winform中使用CefSharp和js互相调用方法,Winform中使用CefSharp和js互相调用方法 vs2019.debug目录下有cef所需要的文件,在其他...

    dwr dwr项目 js 调用 java 后台 方法 js调用java后台方法 后台方法 异步

    当调用出错时,DWR会返回一个包含错误信息的对象,可以在客户端捕获并处理。 9. **示例项目"DwrTest"** "DwrTest"可能是一个包含DWR配置、Java服务端代码和前端调用示例的项目。通过这个项目,开发者可以实践DWR...

    [测试通过]JAVA调用第三方DLL的简单方法:JNA及DEMO

    Java Native Access (JNA) 是一个流行的开源框架,它允许Java代码直接调用本机库函数,而无需编写JNI(Java Native Interface)代码。本文将详细介绍如何使用JNA在Java中调用第三方DLL以及提供的DEMO示例。 首先,...

    java用JNA调用dll实例,包含各种参数调用

    你需要定义一个接口,该接口的每个方法对应DLL中的一个函数,然后使用`NativeLibrary`类加载DLL,并将接口实例化,这样就可以在Java中直接调用DLL函数了。 1. **基本数据类型**:JNA支持Java的基本数据类型如int、...

    wince c#播放声音

    对于音频播放而言,WinCE提供了CoreDll.dll库,这是一个包含了核心系统服务的动态链接库,其中就包括了播放音频的功能。 在C#中,可以通过**平台调用**(Platform Invoke,简称P/Invoke)机制来调用WinCE中CoreDll....

    java调用C#封装的dll方法

    - **定义Java接口:** 创建一个名为`ICOMTest_Bridge`的Java接口,其方法签名应与C++ DLL中定义的相同。 - **实现Java调用:** 在`COMTest_Start`类中实现调用C++ DLL的方法。 **技术要点:** - 需要注意C#和Java...

    C++调用C#的DLL实例程序

    1. 创建C# DLL:在C#项目中定义一个公共类,包含需要调用的方法。例如,可以有一个名为`Calculator`的类,其中有一个`Add`方法用于加法运算。确保将类和方法设置为公共的(`public`),并且将类库项目配置为生成DLL...

    C#调用wps用例CSharp_WPSStartKit

    首先,我们来看标题"C#调用wps用例CSharp_WPSStartKit",这表明这是一个使用C#语言编写的具体示例,用于演示如何在代码中启动和控制WPS应用程序。这个项目可能是通过COM(Component Object Model)接口来实现的,...

    qt编程下实现点击按钮调用外部程序

    如果程序未能启动,`QProcess`会返回一个错误状态,可以通过`errorString()`方法获取具体的错误信息。 当然,这只是一个基础示例。在实际应用中,你可能需要处理更复杂的外部程序调用情况,比如传递参数、读取程序...

    前台JS(Jquery)调用后台方法

    - JQuery中的`$.ajax()`函数是实现AJAX请求的主要方法,它接受一个配置对象,包含URL、类型(GET或POST)、数据、回调函数等参数。 2. **JQuery的AJAX方法**: - `$.get()`: 发起GET请求,可以传递URL和回调函数...

Global site tag (gtag.js) - Google Analytics