标题:API函数求解!!!
只看楼主
小跳蚤
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:1
帖 子:437
专家分:1623
注 册:2011-4-9
结帖率:89.66%
 问题点数:0 回复次数:22 
API函数求解!!!
mciSendString是用来播放多媒体文件的API指令,这个函数只能在对话框播放吗?在窗口上播放不起来吗?
搜索更多相关主题的帖子: 多媒体 对话框 
2012-05-18 15:58
小跳蚤
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:1
帖 子:437
专家分:1623
注 册:2011-4-9
得分:0 
试过了,可以的
2012-05-18 16:27
hellovfp
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:禁止访问
威 望:30
帖 子:2976
专家分:7697
注 册:2009-7-21
得分:0 
你认为Win32 API是什么?
测试所有的API都可以在我们的普通的main函数下面。
试着创建一个控制台工程,把下面的代码放里面运行一下:


#include <iostream>
#include <windows.h>

typedef HINSTANCE _h;//简化一下代码输入而矣,不必在意在句
LRESULT CALLBACK winproc(HWND, UINT, WPARAM, LPARAM);

int main()
{
 std::cout << "hello" << std::endl;//输出到黑窗口中
 
 _h hInst = ::GetModuleHandle(NULL);//获取程序模块实例句柄

 MSG msg;
 HWND hwnd;
 WNDCLASS _class;

 memset(& _class, 0, sizeof(_class));
 _class.hbrBackground = (HBRUSH) 1;//背景
 _class.hInstance = hInst;
 _class.lpszClassName = "WinApp";//窗口类名
 _class.style = CS_HREDRAW | CS_VREDRAW;//窗口样式风格
 _class.lpfnWndProc = winproc;//窗口过程

 ::RegisterClass(& _class);//注册窗口类,没有进行过多的判断,避免代码理解干忧

 hwnd = ::CreateWindow("WinApp",
  "Hello",
  WS_OVERLAPPEDWINDOW,
  50,
  50,
  300,
  200,
  0,
  0,
  hInst,
  0
  );//创建窗口
 
 ::ShowWindow(hwnd, SW_SHOW);//显示窗口
 ::UpdateWindow(hwnd);//更新窗口内容显示

//进入消息循环

 while(::GetMessage(&msg, NULL, 0, 0) > 0)
 {
  ::DispatchMessage(&msg);
 }
 return 0;
}

//窗口过程函数

LRESULT CALLBACK winproc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
 switch(msg)
 {
 case WM_DESTROY:
  ::PostQuitMessage(0);
  break;
 default:
  return ::DefWindowProc(hwnd, msg, wParam, lParam);
 }
 return FALSE;
}

我们都在路上。。。。。
2012-05-19 10:32
小跳蚤
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:1
帖 子:437
专家分:1623
注 册:2011-4-9
得分:0 
_h hInst = ::GetModuleHandle(NULL);//获取程序模块实例句柄
 这个hInst就是黑窗口的句柄吧
2012-05-19 11:25
hellovfp
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:禁止访问
威 望:30
帖 子:2976
专家分:7697
注 册:2009-7-21
得分:0 
不是黑窗口的句柄,模块句柄 != 窗口句柄。

我们都在路上。。。。。
2012-05-19 11:28
小跳蚤
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:1
帖 子:437
专家分:1623
注 册:2011-4-9
得分:0 
什么叫模块句柄啊,我理解的是显示的黑窗口是小的灰色窗口的父窗口
2012-05-19 11:40
hellovfp
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:禁止访问
威 望:30
帖 子:2976
专家分:7697
注 册:2009-7-21
得分:0 
模块是程序相关的概念。一个模块代表的是一个运行中的exe文件或是dll文件,
用来代表这个文件中所有的代码和资源,磁盘上的文件不是模块,装入内存后运行
就叫做模块。一个应用程序调用其它DLL中的API时,这些DLL文件被装入内存,
就产生了不同的模块,为了区分地址空间中不同的模块。

句柄是什么?只是一个数值,它的值对于程序来说没有意义,只是windows用来表示各
种资源的编号而矣,你可以通过查找符号定义(F12)找到这些handle的定义,就是内似于下面这种
结构:struct Handle
{
    int i;
};

我们都在路上。。。。。
2012-05-19 11:49
hellovfp
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:禁止访问
威 望:30
帖 子:2976
专家分:7697
注 册:2009-7-21
得分:0 
这些API就是和我们的C库文件中的printf函数没有什么两样,就是函数。

我们都在路上。。。。。
2012-05-19 11:51
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
得分:0 
case WM_CREATE:
    printf("haha");
    MessageBox(NULL, "dgfdhjg", "fdsfk", MB_OK);
winproc 里加上这个 会在控制台里输出haha

梅尚程荀
马谭杨奚







                                                       
2012-05-19 11:57
小跳蚤
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:1
帖 子:437
专家分:1623
注 册:2011-4-9
得分:0 
多谢了啊,看来我对windows程序设计里面的概念理解的还不够啊,还得多看看啊
2012-05-19 12:00



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-367701-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.663163 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved