解决方案

windows概述(windows程序设计)

seo靠我 2023-09-23 18:54:32

#include <tchar.h>

include <mmsystem.h> //导入声音的文件库 #pragma comment (lib,"Winmm.lib") //导入声音的链SEO靠我接库

程序分为逻辑部分 显示部分(windows)

win32是基于已有的框架的,所以入口函数只有一个

window是基于C,C++,又想有自己所特有的数据类型,所以在C,C++的类型基础上做出了重定义

1、SEO靠我去区别C语言,没有顾名思义

2、封装信息

特性:

1、如果没有讲过,先转定义看这个类型

2、大写H开头,在win32里面讲句柄

3、P,LP开头,在win32里面表示指针

4、windows里面数据类型全是大写,SEO靠我但同时windows是基于C,C++开发的,所以兼容C,C++的数据类型#include <windows.h>int WinMain(_In_ HINSTANCE hInstance, //应用程序SEO靠我实例句柄_In_opt_ HINSTANCE hPrevInstance, //父应用程序实例句柄(现在的版本基本不用,所以为null)_In_ LPSTR lpCmdLine, //命令行参数_InSEO靠我_ int nShowCmd)//窗口显示方式 {MessageBoxMessageBoxA(0, "Hello world!", 0, 0);MessageBoxA(0, lpCmdSEO靠我Line, 0, 0);消息盒子 返回值的值是根据类型而变化的if (IDOK ==MessageBoxA(nullptr,//窗口句柄,这个消息盒子是基于哪个窗口弹出的"abc",//消息盒子的文本SEO靠我内容"1234",//消息盒子的标题MB_OKCANCEL | MB_ICONWARNING))//消息盒子的类型MessageBox(0, 0, 00, 0);

MessageBox返回值

0:对话框建SEO靠我立失败

IDOK = 1 :按确认按钮

IDCANCEL = 2:按取消按钮

IDYES = 6:按的是按钮

IDABOUT = 3:按异常终止按钮

IDRETRY = 4:按重试按钮

IDIGNORE = 5:SEO靠我按忽略按钮

IDNO = 7:按否按钮

字符集: 字符编码 ascii

unicode 宽字节字符集

‘a’=>97

程序中两个字符集的表现: 多字节

char c = a;//多字节的字符存储 cSEO靠我har *pc = "ab中cd";//多字节字符串的描述 pc = &c; int m = strlen(pc);

宽字节

typedef unsigned short SEO靠我wchar_t wchar_t wc = a;//宽字节的字符存储 wchar_t *pwc = L"abcd";//宽字节的字符串的描述 m = wcSEO靠我slen(pwc); //wcslen会报错 wchar_t *pwc = &wc;

通配字符集的表现

TCHAR tc = a; TCHAR *ptc = _T("abcSEO靠我d");//_T()带参宏会自动匹配多字节还是宽字节 _tcslen(ptc);

小结

1、可以不管项目中使用的字符集,可以自行设定用固定的类型去表现字符或字符串,char或wchar_tSEO靠我

2、可以统一使用字符的通配类型

在windows里面所有涉及字符串操作的函数,也都有2个函数

音乐播放器

int WinMain(_In_ HINSTANCE hInstance, //应用程序实例句柄_ISEO靠我n_opt_ HINSTANCE hPrevInstance, //父应用程序实例句柄(现在的版本基本不用,所以为null)_In_ LPSTR lpCmdLine, //命令行参数_In_ int SEO靠我nShowCmd)//窗口显示方式 {wav格式音乐播放PlaySound(_T("Hotel California 加州旅店 - Eagles 老鹰乐队.wav"),//路径文件名,SEO靠我一般用相对路径nullptr,//应用程序实例句柄SND_LOOP | SND_FILENAME | SND_ASYNC);//文件操作模式SND_LOOP 循环 SND_FILENAME 指定文件名SEO靠我 SND_ASYNC 异步//mp3格式音乐的播放mciSendString(_T("open 金志文-中国姑娘.mp3 alias abc"),//命令字符串,open打开一个*.mp3的文件,alSEO靠我ias取了一个叫abc的外号nullptr,//接收信息的缓冲区,null表示不接受信息0,//第二个参数的内存大小(缓冲区大小)nullptr);//回调函数的窗口句柄mciSendString(_SEO靠我T("play abc"), 0, 0, 0);MessageBox(0, 0, 0, 0);return 0; }``

一.Windows四大模块程序

1.1控制台程序

没有自己的窗口,dSEO靠我os-显示或者运行程序,入口mian()

1.2窗口程序

有自己的窗口,win32,mfc,qt,入口WinMain

1.3动态库

后缀dll,不可以单独运行,直接注入到可执行程序中

入口函数DllMain,不SEO靠我是必须.

1.4静态库

以lib为后缀的程序,只用来存储代码和数据.

执行程序直接赋值代码,没有入口函数

二.编译链接流程

2.1编辑器

用来写编写代码的软件,可记事本程序,或其他可编辑的软件

2.2编译器

Cl.eSEO靠我xe把代码翻译成目标文件obj,(cl.exe 源文件名)-产生obj

2.3链接器

link.exe –把obj文件和lib或dll文件链接成exe文件

(link.exe obj的文件名 lib库名)

SEO靠我行: 执行exe程序

2.4资源编辑器

rc.exe 资源文件名 (资源包括图片图标 光标 菜单)

三.第一个win32应用程序

四.编码方式 4.1

从windowsNT开始,windows完全使用unicodSEO靠我e来构建,所以核心函数(创建窗口,显示文本,字符串处理)都提供了unicode版本.

4.2

在window中,函数通常有两个版本,一个带w(wide)结尾和带A(ASNI)结尾的;例如CreateWinSEO靠我dowExA(….)和CreateWindowExW(…),通常情况,我们只接使用CreateWindowEx就可以,如果是unicode编码方式会有一个UNICODE的宏,会直接根据条件编译调用后缀SEO靠我是W版本的

4.3.

windows API函数(openFile ,winExec等)只兼容于ANSI,不兼容unicode编码,所以需要转换成unicode效率低下并且转换是有可能有bug,所以用CrSEO靠我eateprocess和createfile替换,

4.4.

ANSI中字符串处理 Strlen(…)

Unicode中字符串处理 Wcslen(…)

兼容版本字符串处理函数 _tcslen();

4.5

uniSEO靠我code编码方式是两个字节代表一个字符,需要在字符串前加L,或者加_T(字符串)----兼容版本, sizeof(L“TANZHOU”) = 16,

4.6.

运行安全检查:添加头文件StrSafe.h

SSEO靠我canf 警告不安全,可能会操作一块布可以操作的内存.导致内存错误,所以微软重新提供_s的安全版本.

4.7. 修改unicode编码方式截图如下

五.杂碎知识 5.1 messagebox详解

Int MesSEO靠我sageBox(HWND hWnd,//窗口句柄

LPCSTR lpTt,//中间显示字符串

LPCSTR lpCap,//标题字符串

UINT uType);//显示类型

5.2 API概念

applicatSEO靠我ion programming interface 应用程序接口.微软为了方便windows的应用开发,提供给开发者的各种函数,这些函数就是windows操作系统提供给应用程序的接口

5.3 SDK概念SEO靠我

软件开发包.包含了API,说明文档,辅助开发工具.

5.4 头文件详解

windows.h—包含常用的windows的头文件,让开发者方便使用.

winbase.h—内核API接口的封装,kenel32.dSEO靠我ll

winuser.h—用户界面相关接口的API封装,user32.lib

socket------ws2_32.lib 涉及到网络编程socket的库文件

5.5 音乐媒体处理mmsystem.h—多媒SEO靠我体处理头文件,winmm.lib相关PlaySound( 第一个: 播放音乐字符串,该参数可以是WAVE文件的名字,或是WAV资源的名字,或是内存中声音数据的指针, 或SEO靠我是在系统注册表WIN.INI中定义的系统事件声音。如果该参数为NULL则停止正在播放的声音第二个:参数hmod是应用程序的实例句柄,除非pszSound的指向一个资源标识符(即fdwSound被定义为SEO靠我 SND_RESOURCE),否则必须设置为NULL。第三个:参数fdwSound是标志的组合SND_SYNC ---同步播放声音,在播放完后PlaySound函数才返回。 SEO靠我 SND_ASYNC---用异步方式播放声音,PlaySound函数在开始播放后立即返回。SND_FILENAME---pszSound参数指定了WAVE文件名。 SND_RESOSEO靠我URCE --pszSound参数是WAVE资源的标识符,这时要用到hmod参数。SND_PURGE---停止声音。若参数pszSound为NULL,就停止所有的声音,否则,停止pszSound指定的SEO靠我声音。 SND_NOSTOP ----PlaySound不打断原来的声音播出并立即返回FALSE。 SND_LOOP---重复播放声音,必须与SND_ASYNC标志一块SEO靠我使用。

利用MCI 接口实现播放任意格式声音

1.#include //导入声音头文件库

2.#pragma comment(lib,“winmm.lib”)//导入声音的链接库

然后直接用mciSendStrSEO靠我ing函数即可

1.mciSendString(“open C:/123.mp3” , NULL, 0, 0);

2.mciSendString("play C:/123.mp3 “, NULL, 0, SEO靠我0);

3.mciSendString(“close movie”,buf,sizeof(buf),NULL);

4.

5.LPCTSTR lpszCommand, // 指向以null结尾的命令字符串:”SEO靠我命令 设备[ 参数]”

6.LPTSTR lpszReturnString,// 指向接收返回信息的缓冲区,为NULL时不返回信息

7.UINT cchReturn, // 上述缓冲区的大小

8.HANDLSEO靠我E hwndCallback // 在命令串中含notify时,它指定一个回调窗口的句柄

9.// 一般为NULL

10.);

11.如:mciSendString(L"open sample.wav tySEO靠我pe waveaudio alias wave”, NULL, 0, NULL);
“SEO靠我”的新闻页面文章、图片、音频、视频等稿件均为自媒体人、第三方机构发布或转载。如稿件涉及版权等问题,请与 我们联系删除或处理,客服邮箱:html5sh@163.com,稿件内容仅为传递更多信息之目的,不代表本网观点,亦不代表本网站赞同 其观点或证实其内容的真实性。

网站备案号:浙ICP备17034767号-2