双击程序使隐藏的窗口再次显示出来?
我的程序要求只运行一次,当我关闭我的窗口时只是用ShowWindow(SW_HIDE);
当我再次点击程序时,我如何使得这个窗口显示出来,而不是打开另外一个同样的程序?
问题点数:50、回复次数:15Top
1 楼bauhaus()回复于 2005-05-04 19:43:13 得分 0
你说得很对
我学会了
谢谢Top
2 楼woodwoodwood3()回复于 2005-05-04 19:45:47 得分 0
启动程序的第二个实例时,用互斥判断程序已经在运行,
用进程间通讯发送消息给已经运行的程序
响应消息,动作ShowWindow(SW_SHOW);Top
3 楼4102509(物到极时终必反.....)回复于 2005-05-04 19:59:01 得分 0
互斥判断程序我会;
问题ShowWindow(SW_SHOW);我在那里写?
我是重新再双击一次应用程序,如果另已经隐藏的窗口显示出来?
Top
4 楼uovk(石头)回复于 2005-05-04 20:12:06 得分 50
HANDLE hMutex = CreateMutex(NULL,FALSE,"OnlyOnce");
if(hMutex == NULL || ERROR_ALREADY_EXIST)
{
HWND hWnd;
hWnd=::FindWindow(NULL,_T("窗口名称"));
::ShowWindow(hWnd,SW_SHOW);
}Top
5 楼oyljerry(【勇敢的心】→ ㊣提拉米苏√㊣)回复于 2005-05-04 20:19:04 得分 0
::ShowWindow(hWnd,SW_SHOW);
就可以显示隐藏了的Top
6 楼4102509(物到极时终必反.....)回复于 2005-05-04 20:21:16 得分 0
hWnd=::FindWindow(NULL,_T("窗口名称"));在窗口已经隐藏后好像不能查找出来窗口吧???
我隐藏时连进程也隐藏啦~Top
7 楼uovk(石头)回复于 2005-05-04 20:31:47 得分 0
查得出..要不VC的spy++就没用了Top
8 楼4102509(物到极时终必反.....)回复于 2005-05-04 20:41:10 得分 0
if((hMutex == NULL || ERROR_ALREADY_EXISTS)
{
HWND hWnd;
hWnd=::FindWindow(NULL,_T("BarDemo"));
::ShowWindow(hWnd,SW_SHOW);
return FALSE;
}
else
{ pFrame->ShowWindow(SW_MAXIMIZE);
pFrame->UpdateWindow();
return TRUE;
}
我按你说的,我在程序中是这样写的,想有且只有一个窗口,但好像不行,可以重复多个同样的窗口??Top
9 楼uovk(石头)回复于 2005-05-04 20:42:11 得分 0
你可能是在Win98
Win98不支持互斥命名Top
10 楼uovk(石头)回复于 2005-05-04 20:42:43 得分 0
HANDLE hMutex = CreateMutex(NULL,FALSE,"OnlyOnce");
//这个不能用于win98Top
11 楼4102509(物到极时终必反.....)回复于 2005-05-04 20:43:10 得分 0
hWnd=::FindWindow(NULL,_T("BarDemo"));
::ShowWindow(hWnd,SW_SHOW);其中这两行好像不是将那个隐藏的窗口然后显示的代码,而是重新运行一个窗口吧?Top
12 楼4102509(物到极时终必反.....)回复于 2005-05-04 20:43:34 得分 0
我的在XP下~~Top
13 楼uovk(石头)回复于 2005-05-04 20:53:58 得分 0
还有一个原因是你加的位置不对
应该是加在主个前面 XXXX.CPP
的InitInstance()
{ //加在这里
CXXXDlg dlg;
m_pMainWnd = &dlg;
int nResponse = dlg.DoModal();
if (nResponse == IDOK)
{
// TODO: Place code here to handle when the dialog is
// dismissed with OK
}
else if (nResponse == IDCANCEL)
{
// TODO: Place code here to handle when the dialog is
// dismissed with Cancel
}
return false;
}Top
14 楼4102509(物到极时终必反.....)回复于 2005-05-04 21:02:21 得分 0
解决啦,谢谢石头啦~~
给分~Top
15 楼surstar(我要写个操作系统出来……)回复于 2005-05-04 21:14:43 得分 0
给个例子给你~
http://www.csdn.net/cnshare/soft/15/15267.shtm
去下载这个里面里的程序,仔细看里面的代码~ 他就是只能运行一次的
我把里面的代码提取出来贴在下面~ (在AdoRWAccess.cpp文件中,你改改应该可以满足要求)
BOOL CAdoRWAccessApp::InitInstance()
{
AfxEnableControlContainer();
// Standard initialization
// If you are not using these features and wish to reduce the size
// of your final executable, you should remove from the following
// the specific initialization routines you do not need.
#ifdef _AFXDLL
Enable3dControls(); // Call this when using MFC in a shared DLL
#else
Enable3dControlsStatic(); // Call this when linking to MFC statically
#endif
// 此程序只能运行一次,用互斥量来判断程序是否已运行
HANDLE m_hMutex=CreateMutex(NULL,TRUE, m_pszAppName);
if(GetLastError()==ERROR_ALREADY_EXISTS) { return FALSE; }
// 设置对话框背景和文本颜色
// SetDialogBkColor(RGB(160,180,220),RGB(0,0,0));
// ------------------------------------------------------------------------------------------------
// 初始化COM,创建ADO连接等操作
AfxOleInit();
m_pConnection.CreateInstance(__uuidof(Connection));
// 在ADO操作中建议语句中要常用try...catch()来捕获错误信息,
// 因为它有时会经常出现一些想不到的错误。jingzhou xu
try
{
// 打开本地Access库Demo.mdb
m_pConnection->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=Demo.mdb","","",adModeUnknown);
}
catch(_com_error e)
{
AfxMessageBox("数据库连接失败,确认数据库Demo.mdb是否在当前路径下!");
return FALSE;
}
// ---------------------------------------------------------------------------------------------------
CAdoRWAccessDlg dlg;
m_pMainWnd = &dlg;
int nResponse = dlg.DoModal();
if (nResponse == IDOK)
{
// TODO: Place code here to handle when the dialog is
// dismissed with OK
}
else if (nResponse == IDCANCEL)
{
// TODO: Place code here to handle when the dialog is
// dismissed with Cancel
}
// Since the dialog has been closed, return FALSE so that we exit the
// application, rather than start the application's message pump.
return FALSE;
}Top
相关问题
- 如何用程序隐藏和显示DataGrid中的一列
- ◆如何让指定的程序显示隐藏的FORM?
- 如何隐藏*。EXE文件,具体是此*.EXE文件由其他程序调用,而不惜望直接打开(如双击)来着有分
- 怎样用程序控制 CEDIT 和 CButton 控件的显示与隐藏,enable & disable???
- Winform中如何用程序隐藏和显示DataGrid中的一列,,help me!
- SDI程序,如何隐藏本窗体并显示另一个窗体?
- 静态文本控件和GroupBox怎样通过程序隐藏和显示
- 如何使另外一个程序的界面隐藏或显示啊??
- 如何隐藏线程不让其显示在“关闭程序”中和如何判断程序已经运行。
- 请问如何用程序隐藏/显示其它程序启动后留在系统托盘的图标




