我用VC++写了个简单对话框程序,我想让它只能运行一个,该怎么实现? 5

我用VC++写了个简单对话框程序,我想让它只能运行一个,不能同时打开多个,该怎么用代码实现呀?请教大家,代码该怎么写呢?... 我用VC++写了个简单对话框程序,我想让它只能运行一个,不能同时打开多个,该怎么用代码实现呀?请教大家,代码该怎么写呢? 展开
 我来答
老牛带你看奇闻
2009-04-20 · TA获得超过863个赞
知道小有建树答主
回答量:500
采纳率:0%
帮助的人:778万
展开全部
很简单,在你程序初始化的地方调用这个函数,如果返回FALSE就退出程序,

BOOL MutexPass(void)
{
BOOL lbReval;
HANDLE hEvent;
hEvent = CreateEvent(NULL,FALSE,FALSE,_T("Global\\ONE"));
if(Event!=NULL)
{
if(GetLastError() == ERROR_ALREADY_EXISTS)
{
lbReval = FALSE;
CloseHandle(hEvent);
}
else
lbReval = TRUE;
}
else
lbReval = TRUE;
return lbReval;

}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
fllowfeel
2009-04-20 · TA获得超过183个赞
知道答主
回答量:180
采纳率:0%
帮助的人:142万
展开全部
在要创建的对话框类中声明一个成员变量bool m_bIsFirst; 在构造函数中初始化为true;然后在创建对话框的消息处理函数中加上如下代码 if(m_bIsFirst) { dlg.DoModel();m_bIsFirst=false; }
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
yxcncoo
2009-04-20 · 超过32用户采纳过TA的回答
知道答主
回答量:392
采纳率:0%
帮助的人:105万
展开全部
常用的方法是建立一个对话框类的指针,初始化赋值为NULL,对话框建立时把对话框的指针赋给它,销毁时再赋为NULL。以这个指针为判断依据判断是否建立对话框。

if(!指针变量==NULL)
建立对话框
else
return;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
154504457
2009-04-20 · TA获得超过2000个赞
知道小有建树答主
回答量:1182
采纳率:0%
帮助的人:588万
展开全部
你可以建立一个互斥体。这样就可以防止运行多个对话框了。具体代码你可以在网上查一查
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
夜_逍遥
2009-04-21 · 超过28用户采纳过TA的回答
知道答主
回答量:58
采纳率:0%
帮助的人:79.3万
展开全部
//互斥量

HANDLE g_handle = NULL;

SECURITY_ATTRIBUTES sa;
SECURITY_DESCRIPTOR sd;
InitializeSecurityDescriptor(&sd,SECURITY_DESCRIPTOR_REVISION);
SetSecurityDescriptorDacl(&sd,TRUE, NULL, FALSE);
sa.nLength = sizeof(sa);
sa.lpSecurityDescriptor = &sd;
sa.bInheritHandle = TRUE;
g_handle = CreateMutex(&sa , true , "Global\\OnlyOne");

if ((g_handle ) && (GetLastError() == ERROR_ALREADY_EXISTS))
{
CloseHandle(g_handle);
return TRUE;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式