使用DDE使应用程序可以添加新的程序组

当应用程序安装完毕后,通常都会建立程序组,它们是怎么实现的呢?下面是一种使用DDE来添加新的程序组的例子。

1.使用MFC新一项目PMGROUP(对话框形式),在对话框中添加三个Edit Box。

2.使用Class Wizard,添加成员变量m_GroupName,m_ItemName,m_FileName,分别对应添加的三个Edit Box,它们将容纳输入的三个条目(组名,标记名,对应的文件名);

3.在头文件STDAFX.H中,添加下列代码:

#include < ddeml.h >

4.在应用程序类CPGROUPApp的InitInstance函数中,添加下列代码:

BOOL CPMGROUPApp::InitInstance()
{
//...
//Initialze DDEML
DdeInitialize(&dwDDEInst,NULL,APPCMD_CLIENTONLY,0);

if (nResponse == IDOK)
{
// TODO: Place code here to handle when the dialog is
// dismissed with OK
if(!AddPMGroup(dlg.m_GroupName,dlg.m_ItemName,dlg.m_FileName))
{
::MessageBox(NULL,"PMGroup:DDE Error","Error
adding group and item.",MB_ICONHAND|MB_OK);
}

}
//...
}

再给CPGROUPApp类添加一个成员变量dwDDEInst:

DWORD dwDDEInst;(用鼠标在ClassView的CPGROUPApp上点击右键,在弹出的菜单中选取择Add Member Variable,在对话中分别输入DWORD和dwDDEInst)

因为它是一个以对话框为基础的应用程序,当单击确定后,就调用AddPMGroup来添加新的程序组。因此还要给CPGROUPApp类添加上AddPMGroup(用鼠标在ClassView的CPGROUPApp上点击右键,在弹出的菜单中选取择Add Member Function,在对话中分别输入int和AddPMGroup。将生成的int CPMGROUPApp::AddPMGroup()改为int CPMGROUPApp::AddPMGroup(CString &group,CString &item,CString &file),在CPGROUPApp中将int AddPMGroup()改为int AddPMGroup(CString &group,CString &item,CString &file)),AddPMGroup的内容为:

int CPMGROOPApp::AddPMGroup(CString &group,CString &item,CString &file)
{
HSZ hszService=DdeCreateStringHandle(dwDDEInst,_T("PROGMAN"),CP_WINANSI);
HSZ hszTopic=DdeCreateStringHandle(dwDDEInst,_T("PROGMAN"),CP_WINANSI);
HCONV hConV=DdeConnect(dwDDEInst,hszTopic,hszService,NULL);
DdeFreeStringHandle(dwDDEInst,hszService);
DdeFreeStringHandle(dwDDEInst,hszTopic);
if(!hConV)
{
return FALSE;
}
//主要内容
CString cmd="[CreateGroup("+group+")]";//建立组的命令字
DWORD dwResult;
LPCTSTR data=(LPCTSTR)cmd;
DdeClientTransaction((LPBYTE)data,cmd.GetLength (),
hConV,NULL,CF_TEXT,XTYP_EXECUTE,
1000,&dwResult);
cmd="[AddItem("+file+","+item+")]";
//建立"file"的图标,"item"为标记的命令字
data=(LPCTSTR)cmd;
DdeClientTransaction((LPBYTE)data,cmd.GetLength (),
hConV,NULL,CF_TEXT,XTYP_EXECUTE,
1000,&dwResult);
return TRUE;
}

时间: 2024-10-30 13:06:07

使用DDE使应用程序可以添加新的程序组的相关文章

如何解决WinXP打不开添加或删除程序

添加删除程序打不开怎么办?最近有朋友的电脑,出现了一个比较奇怪的故障,添加删除程序打不开.对于添加删除程序打不开,这种情况很少见,而且不是什么严重的问题,解决方法相对也比较简单,下面我们就来一起学习下解决添加删除程序打不开的方法.希望对您有所帮助! 首先,如果以前电脑一切正常,最近才出现添加和删除程序无法删除,那么我们首先使用杀毒软件,对电脑进行全盘扫描,检查是否由于病毒破坏导致的添加和删除程序无法打开.如果杀毒之后,故障依旧,建议您重新启动电脑试试 问题解决办法: 方法一:重新注册3个重要添加

如何安装程序不在“添加或删除程序”里显示

  有的时候在电脑上安装了一些程序,可是又不希望这些程序在"控制面板"的"添加或删除程序"列表中显示,那么该如何进行操作呢?今天,小编就跟大家介绍下解决方法. 不让程序在"添加或删除程序"里显示方法: 运行regedit命令打开"注册表编辑器",在左侧窗格中依次单击进入: "HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionUninstall",

在一个程序后面运行另一个程序

问:怎样在一个程序运行后面运行另一个程序? ●1. 在一个程序里面运行另一个程序的最简单的方法是把它们依次列入一个批处理文件(扩展名为.BAT的文件),在执行该批处理文件时,其中所列程序就会自动运行.在C或DOS中,都没有一种特定的方法来完成"在一个程序结束后运行另一个程序"这样一种函数调用.然而,C提供了两组函数,它们允许一个程序随时可以运行另一个程序,而后者的运行将结束前者的运行.如果你将这样的函数调用放在第一个程序的末尾,就能达到上述目的.C提供的这两组函数是exec()和spa

在C# WinForm 编程中怎么实现添加新行后,使新行成为当前行?

问题描述 在C#WinForm编程中怎么实现添加新行后,使新行成为当前行? 解决方案 解决方案二:路过帮顶=============11月6日,论坛升级公告,积分已经做了调整!http://topic.csdn.net/u/20081107/11/b27dc75f-14b1-4594-9de3-5b18d9e36a11.html此次调整增加了两个新的可用分获取渠道:1:帖子被推荐(加精)后,帖主可以获得88分的可用分奖励:2:帖子结帖后会返还帖主50%的悬赏分,无满意结帖不返还分数:3:接下来会

SAP为其HANA数据库添加五个新应用程序

2013年10月30日,SAP宣布为http://www.aliyun.com/zixun/aggregation/13659.html">HANA内存数据库添加了关于客户能力收集的四个新应用程序,另外一个是欺诈管理应用程序. SAP表示,该软件可以应用于生产型或者直接部署型的企业,以HANA企业云服务的模式推向SAP HANA市场,可免费试用30天. 这一消息是在Strata Conference + Hadoop World大会上宣布的. 新功能的添加是用来实时进行文本分析以及HANA

为PE文件添加新节显示启动信息

病毒并不神秘,也不复杂.相当多的大侠已经在这方面作出了杰出的贡献,例如 29A 组织,我对他们的崇拜之情啊,真是--咳咳,先别扔鸡蛋.其实我想说的是:技术是一柄双刃剑,我们应该把它运用在对社会有益的事情上.所以请勿利用本文的代码进行违法违纪的活动,否则本人保留追究的权利. 本文的技术其实早已是老掉牙的东西了,so如果你已经懂得了编写病毒的方法,请跳过本文:如果你对病毒抱有好奇心,但是还没知道怎么编写,那么本文应该适合你.  :) 言归正传.在 Windows 环境下,所有的可执行文件都是 PE

ASP.NET MVC 5 - 给电影表和模型添加新字段

原文:ASP.NET MVC 5 - 给电影表和模型添加新字段 在本节中,您将使用Entity Framework Code First来实现模型类上的操作.从而使得这些操作和变更,可以应用到数据库中. 默认情况下,就像您在之前的教程中所作的那样,使用 Entity Framework Code First自动创建一个数据库,Code First为数据库所添加的表,将帮助您跟踪数据库是否和从它生成的模型类是同步的.如果他们不是同步的,Entity Framework将抛出一个错误.这非常方便的在

【译】ASP.NET MVC 5 教程 - 9:添加新字段

原文:[译]ASP.NET MVC 5 教程 - 9:添加新字段 在本节中,我们将使用Entity Framework Code First 数据迁移功能将模型类的改变应用到数据库中. 默认情况下,当我们使用Entity Framework Code First 自动创建一个数据库,像我们之前教程中讲的那样,Code First 添加一个table帮我们跟踪数据库结构是否与模型类同步.如果不同步,Entity Framework 将抛出一个错误,这样更方便我们在开发的时候发现问题,否则只能在运行

android 当在主线程里开启一个新线程 程序就崩溃

问题描述 android 当在主线程里开启一个新线程 程序就崩溃 我要实现的功能是检索SDcard里的所有txt文件我尝试过很多办法 1 不用线程 直接在主线程里检索文件 由于有循环且检索时间会超过5秒 导致黑屏然后提示未响应2 我建立一个线程让线程去检索文件当检索完毕后把检索到的文件传递给主类 主类再把检索到的文件显示在list上 但是当线程一启动程序就崩溃了3 最后我在主类里添加handler 当子线程检索完毕就sendmessage给主类 然后主类把子线程检索到的文件显示在list上但程序