`
hereson
  • 浏览: 1426443 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

使用Flash彻底美化你的程序vc++技术

阅读更多

曾经在VCKbaseVC知识库)网站看到过一篇关于Flash的文章,叫做VC中使用 Flash 美化你的程序,文章中介绍的是使用Flash控件在对话框程序中播放Flash文件。由于以前的工作需要曾经接触过使用Scoket通信在VCExe程序和Flash程序中通信的相关技术。在这里介绍给大家。相比上面的那篇文章,其有一下有点:

1、  界面上更加优美。所有的界面部分都是直接使用Flash

2、  所能完成的功能更加完备。几乎所有能在VC的程序中能使用的功能都可以使用。

要做到以上两点所要做的工作也是很简单的,使用的技术也很简单。只要求以下几点:

1、  会使用简单的Flash编辑工具。会写简单的Flash Script脚本。

2、  Socket编程的相关知识。

程序的原理就是:VC程序(对话框程序)在启动以后最小化的任务栏,并建立一个Socket Server进行侦听,在建立完Socket和设置好相关的处理函数以后,启动编译为ExeFlash程序,Flash程序通过SocketVC程序建立连接,将Flash界面上的操作转换为Socket通信,让VC程序处理完成以后将结果返回给Flash程序。其简单的步骤为:

1、  VC程序端(或者其他任何编程语言的程序):建立一个对话框程序,在APP类的InitInstance()函数中添加Scoket初始化:

if (!AfxSocketInit

())

 

       {

 

 

              AfxMessageBox(IDP_SOCKETS_INIT_FAILED

);

 

              return FALSE

;

 

}

 

 

2、  在对话框类的OnInitDialog()函数中添加处理界面部分的程序段:

 

MoveWindow(0,0,0,0);  //将对话框程序界面改变为0

 

ShowWindow(SW_SHOWMINIMIZED);   //使界面最小化到任务栏

 

OnOK(); //调用对话框的OnOK函数

 

3、  在对话框类的OnOK()函数中建立Socket server并侦听:

 

WSADATA

wsaData;

 

    int

iErrorCode;

 

    if (WSAStartup(MAKEWORD(2,1),&wsaData)) //Windows Sockets DLL

 

       {

 

 

               AfxMessageBox("Winsock can not initialize.",MB_ICONSTOP

);

 

         WSACleanup

();

 

               SendMessage(WM_CLOSE,NULL,NULL);//关闭对话框程序

 

         return

;

 

       }

 

 

 

       //Create server Sockettype is SOCK_STREAM

 

       ServerSocket = socket(PF_INET,SOCK_STREAM

,0);   

 

    if(ServerSocket == INVALID_SOCKET

)

 

       {

 

 

              AfxMessageBox("Could not create server Socket.",MB_ICONSTOP

);

 

              SendMessage(WM_CLOSE,NULL,NULL); //关闭对话框程序

 

         return

;

 

       }

 

 

 

m_sockServerAddr.sin_family = AF_INET

;

 

//IP 设置为广播

 

    m_sockServerAddr.sin_addr.s_addr = inet_addr("127.0.0.1"

);

 

       //使用9813端口,自己编程的时候可以随意选择,最好使用5000以后的

 

    m_sockServerAddr.sin_port = htons

(9813);

 

 

//绑定

Socket

 

 

    if (bind(ServerSocket,(LPSOCKADDR)&m_sockServerAddr,sizeof(m_sockServerAddr)) == SOCKET_ERROR) //

 

    {

 

 

              AfxMessageBox("Could not bind Server socket.",MB_ICONSTOP

);

 

              SendMessage(WM_CLOSE,NULL,NULL); //关闭对话框程序

 

        return

;

 

       }

 

 

    iErrorCode = WSAAsyncSelect(ServerSocket,m_hWnd,WM_CLIENT_ACCEPT,FD_ACCEPT

);

 

    if (iErrorCode == SOCKET_ERROR

)

 

       {

 

 

              AfxMessageBox("Could not select socket.",MB_ICONSTOP

);

 

           SendMessage(WM_CLOSE,NULL,NULL); //关闭对话框程序

 

         return

;

 

       }

 

 

 

    if (listen(ServerSocket,1) == SOCKET_ERROR) //begin listen client

 

       {

 

 

              AfxMessageBox("Could not listen.",MB_ICONSTOP

);

 

              SendMessage(WM_CLOSE,NULL,NULL

);

 

        return

;

 

       }

 

 

       //启动Flash程序

 

       CString

FlashExePath;

 

       char

DialogExePath[256];

 

   //获得对话框程序的路径,包含文件名

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics