自己动手写类似酷狗播放器(1)_创建一个基于对话框模板

	学习 C语言也有两个多月了,现在在看的书籍是<windows程序设计>和网友系列文章。自动动手写了音乐播放器,仿照酷狗界面做的,只实现了主要功能。这个会做个连载,主要针对那些刚学习windows程序的同学,有个参考和思路,同时自己也做个总结和展望,以便进一步学习。欢迎同学们留言探讨...

       环境:vc++6.0  SDK编写   操作系统 :winxp sp3    语言:C 语言  待学习完C++后,将全部用C++重写.

(1).理解windows消息机制

    什么叫做windows消息机制?在windows系统中,一切都是操作都是以消息的形式给出,这是操作系统完成的,不用我们管,应用程序就是跑在OS上面的,所以一切的响应操作都是OS和应用程序互相交互,一句话解释就是:操作系统告诉应用程序发生了什么事。然后应用程序接着去做什么
   举个例子: 你妈喊你回家吃饭。这里你妈就是操作系统,喊你就是给你(应用程序)发个消息(快回家)。然后你(应用程序)接收到了这个消息(哦!我妈喊我回家吃饭了)。然后对于你(应用程序)做一列的处理工作来响应消息(就是往回家的路上走这件事).

(2).进一步从代码角度来理解消息机制

   下面就带大家来创建一个简单的窗口,来体会下windows的消息机制。
    目标:弹出一个对话框窗口,当你按下确定键,弹出"你按下了确定键"。
先上一个效果图:

步骤:1.先建立个工程 

下面就进入代码区域了:

    创建一个对话框,可以用资源的方式和 纯代码的方式,这里为了方便体验消息机制,就用资源的方式来创建对话框。
如何创建资源,请接着往下看:
点击新建->new
   就可以在上面区域拖动控件了,实现其实做了这么多就是为了 插入一个对话框资源,当然在资源插入的时候,可以插入很多资源,比如菜单,位图什么的。

2.代码实现部分了 

添加头文件,在创建完资源后,可以到你工程所在的目录看,有个.rc后缀的文件。找到resource.h文件添加入工程中,这个.h文件就是资源的ID号什么的.

最后完整工程就是这样

接下就是代码部分了:

// DialogBased APP.cpp : Defines the entry point for the application.
//


#include "stdafx.h"
#include <windows.h>  //头文件
#include  "resource.h" //资源头文件
//#include <windowsx.h>  //	HANDLE_MSG()宏定义在此文件中定义


BOOL WINAPI Main_PRCO(HWND hwnd,UINT Msg,WPARAM wParam,LPARAM lParam) //对话框处理程序
{	
	switch(Msg)
	{
		case WM_INITDIALOG:
			{	
				return TRUE;
			}
		case WM_COMMAND:  //命令
			{
				switch(wParam)
				{
					case IDOK:
						{	MessageBox(NULL,TEXT("你按下了确定按钮"),TEXT("提示"),MB_OK);
							break;
						}
					default:
						break;
				}
				break;
			}
		case WM_CLOSE: //关闭
			{	
				EndDialog(hwnd,0);
				break;
			}
	}
	return FALSE;
}
int APIENTRY WinMain(HINSTANCE hInstance,
                     HINSTANCE hPrevInstance,
                     LPSTR     lpCmdLine,
                     int       nCmdShow)
{
 	// TODO: Place code here.
	DialogBox(hInstance,MAKEINTRESOURCE(IDD_DIALOG1),NULL,Main_PRCO);//创建一个模态对话框 (自己可以完全处理消息流)
	return 0;
}


上面就是完整的代码部分。你运行下看,就可以看到目标的效果。

(3).代码分析

    在C语言的控制台程序中,我们都知道,入口就是main()函数。同样在windows程序中,也必须有个入口函数,这里就是WinMain函数。所有一些的消息都是从这个入口给到应用程序中的。
int APIENTRY WinMain(HINSTANCE hInstance, //程序实例 就是一个应用程序的进程
                     HINSTANCE hPrevInstance, //32位windows中以抛弃
                     LPSTR     lpCmdLine,  //发送的命令
                     int       nCmdShow) //程序显示的方式,最大化,最小化
{
 	// TODO: Place code here.
	DialogBox(hInstance,MAKEINTRESOURCE(IDD_DIALOG1),NULL,Main_PRCO);//创建一个模态对话框 (自己可以完全处理消息流)具体的参数 自行查找资料 最后一个参数窗口处理函数
	return 0;
}
结论:OS通过该入口,启动应用程序,并且交互。下面 介绍窗口处理函数
BOOL CALLBACK Main_PRCO(HWND hwnd,UINT Msg,WPARAM wParam,LPARAM lParam) //对话框处理程序
{	
	switch(Msg)
	{
		case WM_INITDIALOG: //初始化事件
			{	
				//这里添加初始化代码
				return TRUE;
			}
		case WM_COMMAND:  //命令事件 用于响应控件等的事件 
			{	
				switch(wParam)//当发生wm_command事件后,wPararm和lParam就携带消息的数据参数
				{	//这里wParam就是控件的ID号了
					case IDOK:
						{	MessageBox(NULL,TEXT("你按下了确定按钮"),TEXT("提示"),MB_OK);
							break;
						}
					default:
						break;
				}
				break;
			}
		case WM_CLOSE: //关闭事件
			{	
				EndDialog(hwnd,0);//结束对话框函数 
				break;
			}
	}
	return FALSE;
}
   返回值类型:BOOL (其实就是int) 可以查看定义 WINAPI  CALLBACK都是一种调用方式。具体可以网络查找。然后就是四个参数:1是窗口句柄,2是windows消息(wm开头的) 3.4都是消息附带的参数。至于是什么参数,表示什么,查阅MSDN了。
    上面代码中 有三类最常见的windows消息。WM_INITDIALOG初始化事件,WM_COMMAND命令事件,就是响应各种控件的操作时发生的事件,比如你按下了个按钮,将发送此类事件。WM_CLOSE结束对话框时,发生的事件。
下面这张图 ,就很清楚反应了消息机制的原理。

    进一步理解消息机制,当我们双击了该应用程序,从WinMain入口启动了应用程序,直到我们点击右上角的X来关闭应用程序时,这个程序就一直运行着,并且在一直接受操作系统传来的消息,我们的Dialogbox函数就是完全代替了While(GetMessage(&msg)...)消息循环。所以只要消息一直都在,就都会传给窗口处理过程来处理消息。直到结束窗口.那么看来一切的根源都是不断的获取消息了。对,就是这个由Whlie控制的GetMessage函数就是个系统的API函数,一直会从系统的消息队列中提取消息,不管有没有用用户的任何操作,都会成为一个事件,发送给应用程序,然后应用程序通知窗口过程函数来处理消息,直到应用程序关闭,退出了,也就不调用了GetMessage函数,这就是消息处理机制。

(3).如何创建SDK对话框模板向导

	上面的实例程序就是一个最小模块的代码,以后任何程序都要用到,所以将其变为一个向导,在每次新建一个应用程序的时候,可以不必每次都去手动创建,做重复的工作,但是第一次最好自己创建下,从无到有 的体会下.
	下面就带大家一起来创建个基于SDK 对话框的模板向导,该向导创建完毕后会在新建-工程中出现。
	首先重新双击VC 启动。然后在新建
然后 查找上面实例工程中的 .dsp后缀的文件.
 	然后修改 文件,添加个头文件即可,然后运行。
然后将会在 新建 -工程中看见此向导了。																						完毕.

好的,让我们一步步来制作一个类似酷狗音乐安装界面的nsis脚本。 步骤一:准备工作 首先,您需要下载并安装NSIS软件,它是一个用于创建Windows安装程序的开源工具。安装完成后,您需要打开NSIS Script Editor(NSIS脚本编辑器)。 步骤二:创建一个基本的NSIS脚本 在NSIS Script Editor中,您可以创建一个新的NSIS脚本。这里我们创建一个基本的NSIS脚本,包含了必要的元素,如: ``` ;-------------------------------- ;基本信息 Name "My Application" OutFile "MyApplication.exe" InstallDir "$PROGRAMFILES\MyApplication" ;-------------------------------- ;页面设置 Page directory "MyApplication" Page instfiles ;-------------------------------- ;安装过程 Section SetOutPath "$INSTDIR" File "MyApplication.exe" SectionEnd ``` 这个脚本包含了一些基本信息和页面设置,以及一个Section,用于定义安装过程。在页面设置中,我们使用了Page命令来定义安装界面的目录和安装进度条等。 步骤三:制作安装界面 现在,我们需要添加几个自定义页面,以创建一个类似酷狗音乐安装界面的NSIS脚本。在这些页面中,我们将包含一些图像、文本和按钮等元素。 ``` !define MUI_HEADERIMAGE !define MUI_HEADERIMAGE_BITMAP "header.bmp" !define MUI_WELCOMEFINISHPAGE_BITMAP "welcome.bmp" ;-------------------------------- ;页面设置 !insertmacro MUI_PAGE_WELCOME !define MUI_PAGE_CUSTOMFUNCTION_PRE PreLicense !insertmacro MUI_PAGE_LICENSE "license.txt" !define MUI_PAGE_CUSTOMFUNCTION_LEAVE LeaveLicense !insertmacro MUI_PAGE_INSTFILES !insertmacro MUI_PAGE_FINISH ``` 上面的代码定义了一些宏和页面设置,使用了InsertMacro命令来添加页面。我们可以通过修改这些页面的布局和元素,来创建一个自定义的安装界面。 步骤四:添加安装脚本 现在,我们需要添加一些安装脚本,以实现安装过程中的一些操作。例如,我们可以添加一个自定义的安装路径选择器,让用户选择安装路径。我们还可以添加一些自定义的操作,如创建快捷方式、添加环境变量等。 ``` ;-------------------------------- ;自定义页面 Function PreLicense MessageBox MB_OK "Welcome to My Application Installation Wizard!" FunctionEnd Function LeaveLicense StrCpy $INSTDIR $PROGRAMFILES\MyApplication FunctionEnd Function .onInit !insertmacro MUI_LANGDLL_DISPLAY FunctionEnd Function .onInstSuccess CreateShortCut "$DESKTOP\My Application.lnk" "$INSTDIR\MyApplication.exe" FunctionEnd ``` 上面的代码定义了一些自定义函数,用于在安装过程中执行一些操作,例如显示欢迎消息、选择安装路径、添加快捷方式等。 步骤五:编译和测试 最后,我们需要编译NSIS脚本,生成一个可执行文件,并测试安装过程。您可以在NSIS Script Editor中使用“Compile NSIS Script”命令来编译脚本,然后运行生成的可执行文件进行测试。 以上就是制作一个类似酷狗音乐安装界面的NSIS脚本的基本步骤,您可以根据自己的需要和喜好进行修改和扩展。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值