软件设计深度挖掘(二)(仅针对windows平台)实现杂谈篇

原创 2002年01月07日 10:16:00

软件设计深度挖掘(二)(仅针对windows平台)实现杂谈篇

    既然叫设计当然我们不能撇开它的可实现性了,上一节我说过,具体的系统
分析员应该具备的知识应该是错综百代,广博精微的!如果说软件的设计是经验
的积累,那么这些技术实现就是其中最重要的一环,因为对于我们来讲,技术的
更新远远超过了设计思想的更新。我们不能置基础而不顾,设计空中楼阁。下面
我们就讲一讲这些放面的涉及范围和解决方法。里面可能不是最优但我想足以抛
砖引玉了。
    现在围绕在我们面前的技术问题很多,很杂。不像10年前那么单纯,实现一个
问题的途径一般只有一两种,现在的解决方法真是层出不穷,黑白道的方法都有了。
每次出现一个新版本的东西就要学很久,现在我们应该看清楚了,我们不可能永远
走在浪尖,我们不能靠身体和知识搏斗了,要靠思想。msdn有谁看完了呢,没有!
有谁编写过300万行代码,也是没有,你不可能来实践所有的想法,因为你没有时间。
你只能针对某一个问题进行研究,就象爱因斯坦不会做饺子一样,我们都有各自的
领域。有时我们会发现某个人懂得真多,大家别信,大部分是想法,不是实践。系统
分析员要求就是想法的正确率要非常高了而已。因此这才是真正的经验,这个经验
有可能完成一项创举,也有可能埋葬一个工程。下面就我的经验来谈谈windows
下的各种技术实现方法。

    首先给大家一个例子:它完成的功能是将windows计算器的菜单变成记事本的
菜单:
        HWND hWndC;
 HWND hWndE;
 HMENU hMenu;
 hWndC = ::FindWindow("SciCalc",NULL);
 hWndE = ::FindWindow("Notepad",NULL);
 hMenu = ::GetMenu(hWndE);
 ::SetMenu(hWndC,hMenu);
将这段代码加入你的程序,一个按钮,或者菜单中,将计算器和记事本打开(notepad)
就可以允许看效果了。这个原理可以用来动态改变菜单,插入,删除,修改窗口和菜单的,也就是完全控制一个窗口是非常简单的,哈哈不信,试试啊!
    菜单变化后不能响应事件了对吧,那时ID号不对了嘛,这里仅仅做个示范,后面会详细解释的。从这个例子你应该可以理解到window的东西都是相通的,有很多原来认为很复杂的东西其实是非常简单的,只是我们的经验不足而已。不相信吗?那么我们再作个试验:如果你正确安装了directx8.0 SDK的话将下面编译成执行文件。(控制台工程)
#include <dshow.h>
void main(void)
{   //下面两个东西一个是建立图形用的类,一个是控制播放等操作的类(是接口)
    IGraphBuilder *pGraph;
    IMediaControl *pMediaControl;
    //下面这个一定要有了,就是说我的程序里面要用com组件的意思
    CoInitialize(NULL);
   
    // 找那个可以用的函数名称(就是接口)
    CoCreateInstance(CLSID_FilterGraph, NULL, CLSCTX_INPROC_SERVER,
                        IID_IGraphBuilder, (void **)&pGraph);
    pGraph->QueryInterface(IID_IMediaControl, (void **)&pMediaControl);
   

    // 下面的东西是播放函数调用了,其中"C://Example.avi"可以自己更改的
    // 这个东西可以播放很多东西,不只是avi,不信试试,什么图像,什么视
    // 频都可以(夸张了一点)
    pGraph->RenderFile(L"C://Example.avi", NULL);
    pMediaControl->Run();
    // 清楚原来使用的那个函数占用的内存了
    pMediaControl->Release();
    pGraph->Release();
    //告诉windows我们不用com组件了
    CoUninitialize();
}
   这个例子我们能体会到些什么了吧,什么显示jpg,显示mpeg了等等,我们有这么
简单的办法,很不错吧!
   再随便讲一个多显示器的东西,对于初学着来说好像很难啊,其实呢,
HMONITOR MonitorFromWindow( HWND hwnd, DWORD dwFlags);
这个函数就搞定了,编写多显示器的函数一共才6个,一个回调,一个枚举,一个info,下面就全是MonitorFrom×××了,觉得不可思议了吧!就这么简单.

   其实这些都是快餐,什么意思呢?别人没有涉及到这个领域就不会清楚里面的难易
程度,说一两句就明白了,这种办法很多也是靠经验的积累,但这种办法对于系统分析员来讲是有点花拳绣腿了。

我们后面将会步入正题,进行我们的开发之路。比如网络视频,什么语音通讯中心,vod,流媒体的开发等等了,我会一一讲解。

 
       

软件设计杂谈<二>

寻找(多个)解决方案   如果对问题已经有不错的把握,接下来就是解决方案的发现之旅。这是个考察big picture的活计。同样是满足孩子想要个汽车的愿望,你可以: 1.去玩具店里买一个现成的 ...
  • bnmjk7
  • bnmjk7
  • 2015年09月09日 20:21
  • 157

深度学习在数据挖掘的应用

深度学习是我们明略重要的研究方向,是目前工业界学术界实现了很多令人惊叹功能的工具,也是通向人工智能的必经之路。 我们先来看看深度学习能做什么,Google研究的无人驾驶,其组件由两个部分组成,一...
  • LW_GHY
  • LW_GHY
  • 2016年05月21日 12:52
  • 7165

软件设计杂谈

软件设计杂谈 2015-04-17 程序人生 程序人生 程序人生 微信号 programmer_life 功能介绍 十年漫漫程序人生,打过各种杂,也做过让我骄傲的软件;管理过十多人的团队,...
  • lindexi_gd
  • lindexi_gd
  • 2016年08月25日 11:30
  • 586

软件设计杂谈<一>

disclaimer: 本文所讲的设计,非UI/UE的设计,单单指软件代码/功能本身在技术上的设计。UI/UE的主题请出门右转找特赞(Tezign)。   在如今这个Lean/Agile横扫一切的年...
  • bnmjk7
  • bnmjk7
  • 2015年09月09日 20:18
  • 135

Deep Learning及NLP(自然语言处理)杂谈--第三部分

CNN在自然语言处理方面的应用及其他advanced的NLP应用
  • NeighborhoodGuo
  • NeighborhoodGuo
  • 2015年08月23日 20:43
  • 2003

java提高篇(六)-----关键字static

一、 static代表着什么        在Java中并不存在全局变量的概念,但是我们可以通过static来实现一个“伪全局”的概念,在Java中static表示“全局”或者“静态”的意思,用来修饰...
  • chenssy
  • chenssy
  • 2013年10月24日 20:07
  • 8294

谷俊丽分享之基于深度学习的大数据挖掘

谷俊丽:博士学历,毕业于清华大学-美国University of Illinois Urbana-champaign大学,在清华期间作为核心人员研发过超长指令字数字信号处理器,在美期间曾参与UIU...
  • u010159842
  • u010159842
  • 2015年09月26日 17:33
  • 4327

什么是人工智能、机器学习、深度学习、数据挖掘以及数据分析?<二>

什么是人工智能、机器学习、深度学习、数据挖掘以及数据分析?本文尝试给出自己的理解和认知。...
  • blueheart20
  • blueheart20
  • 2017年04月30日 22:18
  • 2337

二值化神经网络系列一:二值化神经网络介绍

二值化神经网络以其高模型压缩率和快计算速度的潜在优势,近些年成为深度学习的热门研究方向。本篇博文将对二值化神经网络做一个详细的介绍。 尊重原创,转载请注明:  http://blog.csdn...
  • fsFengQingYangheihei
  • fsFengQingYangheihei
  • 2017年03月15日 17:36
  • 1729

数据挖掘、机器学习、深度学习、推荐算法的联系与差别总结

数据挖掘,机器学习,深度学习,推荐算法的联系与区别
  • shanshanhi
  • shanshanhi
  • 2016年12月22日 15:39
  • 2992
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:软件设计深度挖掘(二)(仅针对windows平台)实现杂谈篇
举报原因:
原因补充:

(最多只允许输入30个字)