MFC和Flash的完整通讯

来源:互联网 发布:社交网络 英语作文 编辑:程序博客网 时间:2024/05/20 21:22

      笔者在进行MFC和Flash的美化&通讯方面,以一个初级入门的情况,经历了几近一个月的奋战,终于在浩瀚的谷歌百度和MSDN中整合出了完整的美化&通讯实例,放置在Blog中,以备自己需要和提供给各位奋战在同一战线的战友使用,自此资源共享,节约时间。

    首先要感谢在我总结之前,提供给我资源的不知详细名称的各位大大,我是站在你们的肩膀上才可能完成这项总结。

    因为时间的关系,我会尽量将网页参考放置在本文中,如有出处,请见谅,请告知我,我讲进行修改。

   《使用Flash彻底美化你的程序vc++技术》——这篇文章给予了我最大的启发。

http://hi.baidu.com/shewenbo/blog/item/9eb944a79c82df95d043582a.html

    此项目用到的是MFC和Flash的socket进行通信。

@@@@@@@@@@@@@@@@@@@@MFC部分@@@@@@@@@@@@@@@@@@@@

1. 在vc++6.0中建立我们需要的MFC AppWizard(exe)工程

1

选择基本对话框

2

选择包含windows sockets

3

点击完成到达我们将要编程的界面

4

在开始写代码前,需要向工程中添加一个库函数。“工程”->“设置”->“连接”。在“对象/库模块”中添加 ws2_32.lib 。如下图,点击确定,开始进行编码

7

在左边的窗口双击CMFCFlashSocketApp()下的函数InitInstance()函数,可以看到下面的函数内容,此为笔者在文章开头提供的网址中所应用的内容:

5

但是笔者根据孙鑫老师所编著的《VC++深入详解》中的讲述,采用的下图中的代码,进过测试是正确的,各位可以尝试下。

6

在CMFCFlashSocketDlg()下的OnInitDialog()函数中添加:

    MoveWindow(0, 0, 0, 0);
    ShowWindow(SW_SHOWMINIMIZED);

添加位置如下图:

8

因我们采用的通信方式是Socket通信,在CMFCFlashSocketDlg()添加函数InitSocket()进行Socket初始化。

方法为在左窗口内的单击CMFCFlashSocketDlg()后右击“添加成员函数”。如下图进行函数添加

9

在左窗口内的单击CMFCFlashSocketDlg()后右击“添加成员变量”,创建类型为SOCKET类型的成员变量m_socket。成员变量的创建方法在后面还会用到。

10

用下图中的代码段,填充刚刚建立的函数InitSocket(),同时,我们也需要想建立m_socket对象一样建立

SOCKADDR_IN m_socketAddr;
SOCKET Client;
这两个对象。建立完成后效果如下图。

11

在InitSocket()函数中调用了函数ConnFlash(),该函数的添加同InitSocket()函数的添加是相同的。在这里不再赘述。下图中的代码段用来填充ConnFlash()函数。此要求将Flash发布的程序放到同该工程中,这样才能在运行MFC程序后才能正确运行flash程序。对Flash程序的发布会在Flash部分介绍。

12

创建建立Socket连接的函数OnAccept(WPARAM wParam, LPARAM lParam)。此函数同上面创建的略有不同,在建立的时候需要自己书写消息映射,想详细了解消息映射的读者可以参考候俊杰老师所编著的《深入浅出MFC》

13

下面将要建立的函数OnReadClose(WPARAM wParam, LPARAM lParam)和函数OnAccept(WPARAM wParam, LPARAM lParam)都是对相互传递的Socket消息进行处理,所以这两个函数的建立过程是相同的。

14

这里将比较详细的介绍函数OnReadClose(WPARAM wParam, LPARAM lParam)和函数OnAccept(WPARAM wParam, LPARAM lParam)的建立过程。读者可以先在工程中添加如上两图中的函数内容。然后需要的就是建立消息间的映射。

在窗口的左侧双击CMFCFlashSocketDlg(),在顶部合适位置添加消息的定义等三个定义

15

在CMFCFlashSocketDlg.CPP(注意,此处是CMFCFlashSocketDlg.CPP而不是CMFCFlashSocketDlg())中添加关于函数OnReadClose(WPARAM wParam, LPARAM lParam)和函数OnAccept(WPARAM wParam, LPARAM lParam)消息的映射:

    ON_MESSAGE(WM_CLIENT_ACCEPT, OnAccept)
    ON_MESSAGE(WM_CLIENT_READCLOSE, OnReadClose)  

如下图中灰色部分。

16

然后在CMFCFlashSocketDlg()中添加如下内容:

      afx_msg void OnAccept(WPARAM wParam, LPARAM lParam);
    afx_msg void OnReadClose(WPARAM wParam, LPARAM lParam);

17

自此,MFC和Flash的socket通信的MFC部分完成。

下面一节将具体介绍Flash部分。

原创粉丝点击