如何让程序启动的时候不得到焦点

bborn 2007-03-31 03:52:23
我想让我的程序启动后就最小化到托盘

现在做成了后 当前窗口就失去了焦点

如何让我的程序启动后之前活动的窗口 仍然是活动的?
...全文
384 9 打赏 收藏 举报
写回复
9 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
feifeifei2013 2007-04-04
BOOL CtestssDlg::OnInitDialog()
{
CDialog::OnInitDialog();

// 将\“关于...\”菜单项添加到系统菜单中。

// IDM_ABOUTBOX 必须在系统命令范围内。
ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
ASSERT(IDM_ABOUTBOX < 0xF000);

CMenu* pSysMenu = GetSystemMenu(FALSE);
if (pSysMenu != NULL)
{
CString strAboutMenu;
strAboutMenu.LoadString(IDS_ABOUTBOX);
if (!strAboutMenu.IsEmpty())
{
pSysMenu->AppendMenu(MF_SEPARATOR);
pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
}
}

// 设置此对话框的图标。当应用程序主窗口不是对话框时,框架将自动
// 执行此操作
SetIcon(m_hIcon, TRUE); // 设置大图标
SetIcon(m_hIcon, FALSE); // 设置小图标

// TODO: 在此添加额外的初始化代码
ShowWindow(SW_MINIMIZE);
return TRUE; // 除非设置了控件的焦点,否则返回 TRUE
}

这是对话框程序 的最小化创建方法
  • 打赏
  • 举报
回复
feifeifei2013 2007-04-04
pMainFrame->ShowWindow(SW_MINIMIZE);


这样就行了 没事多看点msdn好不好
  • 打赏
  • 举报
回复
bborn 2007-04-04
高手来解决
  • 打赏
  • 举报
回复
bborn 2007-04-03
我不知道你说这些方法 你有测试过没有
BOOL CtestApp::InitInstance()
{
h = GetActiveWindow();
// 如果一个运行在 Windows XP 上的应用程序清单指定要
// 使用 ComCtl32.dll 版本 6 或更高版本来启用可视化方式,
//则需要 InitCommonControlsEx()。否则,将无法创建窗口。
INITCOMMONCONTROLSEX InitCtrls;
InitCtrls.dwSize = sizeof(InitCtrls);
// 将它设置为包括所有要在应用程序中使用的
// 公共控件类。
InitCtrls.dwICC = ICC_WIN95_CLASSES;
InitCommonControlsEx(&InitCtrls);

CWinApp::InitInstance();

AfxEnableControlContainer();

// 标准初始化
// 如果未使用这些功能并希望减小
// 最终可执行文件的大小,则应移除下列
// 不需要的特定初始化例程
// 更改用于存储设置的注册表项
// TODO: 应适当修改该字符串,
// 例如修改为公司或组织名
SetRegistryKey(_T("应用程序向导生成的本地应用程序"));

CtestDlg dlg;
m_pMainWnd = &dlg;
INT_PTR nResponse = dlg.DoModal();
if (nResponse == IDOK)
{
::SetActiveWindow(h);
return TRUE;
}
}
我把getactivewindow 放在最前面 得到的句柄是空的
  • 打赏
  • 举报
回复
halfcady 2007-04-01
SetActiveWindow可以的 在app 的InitInstance() GetActiveWindow()
然后在m_pMainWnd->ShowWindow(SW_SHOWMINIMIZED);后加
SetActiveWindow(hWnd);
  • 打赏
  • 举报
回复
bborn 2007-04-01
顶一个

setfocus 和 setactivewindow 都没有用啊?
  • 打赏
  • 举报
回复
bborn 2007-03-31
在 winMain 的第一步执行
HWND currentActive = GetActiveWindow();

得到的句柄就是空的...
这个方法好像不行
  • 打赏
  • 举报
回复
chq_zml 2007-03-31
GetActiveWindow后
然后setFocus
  • 打赏
  • 举报
回复
Ming6425 2007-03-31
GetActiveWindow得到程序启动前的活动窗口的句柄
程序启动后,在SetFocus给得到的句柄
  • 打赏
  • 举报
回复
相关推荐
发帖
界面

1.5w+

社区成员

VC/MFC 界面
社区管理员
  • 界面
加入社区
帖子事件
创建了帖子
2007-03-31 03:52
社区公告
暂无公告