孕妇吃什么钙片:VC++6.0 真正实现对话框启动时完全隐藏
来源:百度文库 编辑:偶看新闻 时间:2024/07/04 23:02:08
前面在网上看到一些用VC++6.0来实现对话框启动时隐藏的文章,感觉都没有达到我想要的效果。在经过分析之后终于实现了,而且非常简便。主要实现方法如下:1、在BOOL CMyApp::InitInstance()函数中将下列内容 CMyDlg dlg; m_pMainWnd = &dlg; int nResponse = dlg.DoModal(); if (nResponse == IDOK) { // TODO: Place code here to handle when the dialog is // dismissed with OK return TRUE; } else if (nResponse == IDCANCEL) { // TODO: Place code here to handle when the dialog is // dismissed with Cancel return FALSE; } // Since the dialog has been closed, return FALSE so that we exit the // application, rather than start the application's message pump. return TRUE;/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////更改为下列内容(其中的IDD_MY_DIALOG为你在启动时要隐藏的对话框的ID): CMyDlg *dlg=new CMyDlg;// m_pMainWnd = &dlg; m_pMainWnd = dlg; int nResponse =dlg->Create(IDD_MY_DIALOG,NULL);
// int nResponse = dlg.DoModal();/* if (nResponse == IDOK) { // TODO: Place code here to handle when the dialog is // dismissed with OK return TRUE; } else if (nResponse == IDCANCEL) { // TODO: Place code here to handle when the dialog is // dismissed with Cancel return FALSE; }*/ // Since the dialog has been closed, return FALSE so that we exit the // application, rather than start the application's message pump. return TRUE;2、如果采用托盘图标控制方式,则编写托盘图标控制函数,如下:void CMyDlg::OnMyNotify(){ NOTIFYICONDATA nid; nid.cbSize = sizeof( NOTIFYICONDATA ); nid.hWnd = m_hWnd; // handle of window that will receive // messages from icon nid.uID = IDR_MAINFRAME; // id for this icon nid.uFlags = NIF_MESSAGE|NIF_ICON|NIF_TIP; // the next three parameters are valid nid.uCallbackMessage = WM_SYSTRAY; // message that icon sends when clicked nid.hIcon = AfxGetApp()->LoadIcon( IDR_MAINFRAME ); // icon strcpy( nid.szTip, "显示信息" ); // bubble help message for icon ::Shell_NotifyIcon( NIM_ADD,&nid );}其中的WM_SYSTRAY为自定义消息,应放置在上述托盘函数所在的文件的下列语句*****************************************************#ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE[] = __FILE__;#endif的后面 #define WM_SYSTRAY WM_USER+1003、为使托盘响应鼠标消息,需要添加如下函数LRESULT CMyDlg::OnSystemTray(WPARAM wParam, LPARAM lParam){ // wParam = the nid.uID defined above // (useful if you have more then one icon in tray) // lParam = mouse message if ( wParam = IDR_MAINFRAME ) { switch( lParam ) { case WM_MBUTTONDOWN: OnDestroy();//此处为你想完成的任何功能函数 break; case WM_LBUTTONDOWN: { ModifyStyleEx(WS_EX_TOOLWINDOW,WS_EX_APPWINDOW, SWP_DRAWFRAME);//点击鼠标左键时显示对话框 this->ShowWindow(TRUE); this->SetForegroundWindow();//前置对话框 } break; case WM_RBUTTONDOWN: this->SetForegroundWindow();//前置对话框,调用弹出菜单。当鼠标在菜单外点击时菜单自动消失 POINT pt; GetCursorPos(&pt); CMenu menu; menu.LoadMenu(IDR_MENU_POP); menu.GetSubMenu(0)->EnableMenuItem(IDR_OPENARCHIVE,MF_BYCOMMAND | MF_ENABLED); menu.GetSubMenu(0)->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTALIGN, pt.x, pt.y, this,NULL); menu.Detach(); break; } } return 1;}4、增加销毁托盘图标的功能函数void CMyDlg::OnDestroyIcon(){ NOTIFYICONDATA nid; nid.cbSize = sizeof( NOTIFYICONDATA ); nid.hWnd = m_hWnd; nid.uID = IDR_MAINFRAME; nid.uFlags = 0; ::Shell_NotifyIcon( NIM_DELETE,&nid );}5、在退出程序前必须使用下述方法void CMyDlg::OnDestroy() { // TODO: Add your message handler code here// UnregisterHotKey(GetSafeHwnd(),WM_HOTKEYEXIT);// // UnregisterHotKey(GetSafeHwnd(),WM_HOTKEYSHOW);// m_hWndWM_YHSHOTKEYEXIT// UnregisterHotKey(GetSafeHwnd(),WM_HOTKEYHIDE);// m_hWnd
OnDestroyIcon();
CDialog::OnDestroy();}6、结尾如果不采用托盘图标方式交互,也可以采用“热键”方式:在BOOL CMyDlg::OnInitDialog()中设置 RegisterHotKey(GetSafeHwnd(),WM_HOTKEYICON,MOD_CONTROL|MOD_ALT, 'A'); RegisterHotKey(GetSafeHwnd(),WM_HOTKEYEXIT,MOD_CONTROL|MOD_ALT, 'B'); RegisterHotKey(GetSafeHwnd(),WM_HOTKEYSHOW,MOD_CONTROL|MOD_ALT, 'C'); RegisterHotKey(GetSafeHwnd(),WM_HOTKEYHIDE,MOD_CONTROL|MOD_ALT, 'D'); // 注:功能键可以是 MOD_CONTROL|MOD_ALT|MOD_SHIFT 的组合。不过一定要在退出程序前注销“热键”。见上面第5条。//其中的自定义消息如下#define WM_HOTKEYEXIT WM_USER + 1000#define WM_HOTKEYSHOW WM_USER + 1001#define WM_HOTKEYHIDE WM_USER + 1002#define WM_HOTKEYICON WM_USER + 1003为自定义消息,必须放置于文件的头部。见文中*****************************************************处。
// int nResponse = dlg.DoModal();/* if (nResponse == IDOK) { // TODO: Place code here to handle when the dialog is // dismissed with OK return TRUE; } else if (nResponse == IDCANCEL) { // TODO: Place code here to handle when the dialog is // dismissed with Cancel return FALSE; }*/ // Since the dialog has been closed, return FALSE so that we exit the // application, rather than start the application's message pump. return TRUE;2、如果采用托盘图标控制方式,则编写托盘图标控制函数,如下:void CMyDlg::OnMyNotify(){ NOTIFYICONDATA nid; nid.cbSize = sizeof( NOTIFYICONDATA ); nid.hWnd = m_hWnd; // handle of window that will receive // messages from icon nid.uID = IDR_MAINFRAME; // id for this icon nid.uFlags = NIF_MESSAGE|NIF_ICON|NIF_TIP; // the next three parameters are valid nid.uCallbackMessage = WM_SYSTRAY; // message that icon sends when clicked nid.hIcon = AfxGetApp()->LoadIcon( IDR_MAINFRAME ); // icon strcpy( nid.szTip, "显示信息" ); // bubble help message for icon ::Shell_NotifyIcon( NIM_ADD,&nid );}其中的WM_SYSTRAY为自定义消息,应放置在上述托盘函数所在的文件的下列语句*****************************************************#ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE[] = __FILE__;#endif的后面 #define WM_SYSTRAY WM_USER+1003、为使托盘响应鼠标消息,需要添加如下函数LRESULT CMyDlg::OnSystemTray(WPARAM wParam, LPARAM lParam){ // wParam = the nid.uID defined above // (useful if you have more then one icon in tray) // lParam = mouse message if ( wParam = IDR_MAINFRAME ) { switch( lParam ) { case WM_MBUTTONDOWN: OnDestroy();//此处为你想完成的任何功能函数 break; case WM_LBUTTONDOWN: { ModifyStyleEx(WS_EX_TOOLWINDOW,WS_EX_APPWINDOW, SWP_DRAWFRAME);//点击鼠标左键时显示对话框 this->ShowWindow(TRUE); this->SetForegroundWindow();//前置对话框 } break; case WM_RBUTTONDOWN: this->SetForegroundWindow();//前置对话框,调用弹出菜单。当鼠标在菜单外点击时菜单自动消失 POINT pt; GetCursorPos(&pt); CMenu menu; menu.LoadMenu(IDR_MENU_POP); menu.GetSubMenu(0)->EnableMenuItem(IDR_OPENARCHIVE,MF_BYCOMMAND | MF_ENABLED); menu.GetSubMenu(0)->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTALIGN, pt.x, pt.y, this,NULL); menu.Detach(); break; } } return 1;}4、增加销毁托盘图标的功能函数void CMyDlg::OnDestroyIcon(){ NOTIFYICONDATA nid; nid.cbSize = sizeof( NOTIFYICONDATA ); nid.hWnd = m_hWnd; nid.uID = IDR_MAINFRAME; nid.uFlags = 0; ::Shell_NotifyIcon( NIM_DELETE,&nid );}5、在退出程序前必须使用下述方法void CMyDlg::OnDestroy() { // TODO: Add your message handler code here// UnregisterHotKey(GetSafeHwnd(),WM_HOTKEYEXIT);// // UnregisterHotKey(GetSafeHwnd(),WM_HOTKEYSHOW);// m_hWndWM_YHSHOTKEYEXIT// UnregisterHotKey(GetSafeHwnd(),WM_HOTKEYHIDE);// m_hWnd
OnDestroyIcon();
CDialog::OnDestroy();}6、结尾如果不采用托盘图标方式交互,也可以采用“热键”方式:在BOOL CMyDlg::OnInitDialog()中设置 RegisterHotKey(GetSafeHwnd(),WM_HOTKEYICON,MOD_CONTROL|MOD_ALT, 'A'); RegisterHotKey(GetSafeHwnd(),WM_HOTKEYEXIT,MOD_CONTROL|MOD_ALT, 'B'); RegisterHotKey(GetSafeHwnd(),WM_HOTKEYSHOW,MOD_CONTROL|MOD_ALT, 'C'); RegisterHotKey(GetSafeHwnd(),WM_HOTKEYHIDE,MOD_CONTROL|MOD_ALT, 'D'); // 注:功能键可以是 MOD_CONTROL|MOD_ALT|MOD_SHIFT 的组合。不过一定要在退出程序前注销“热键”。见上面第5条。//其中的自定义消息如下#define WM_HOTKEYEXIT WM_USER + 1000#define WM_HOTKEYSHOW WM_USER + 1001#define WM_HOTKEYHIDE WM_USER + 1002#define WM_HOTKEYICON WM_USER + 1003为自定义消息,必须放置于文件的头部。见文中*****************************************************处。
用vc++进行api编程时怎样实现应用程序只打开对话框而不打开窗口
用VC实现在对话框上显示多张图片
启动时弹出对话框??
如何用VC++6.0 MFC 实现计算器
用VC实现在一个对话框中显示多张图片~~!
用VC实现在一个对话框上显示多张图片
vc++中如何实现在一个对话框中单击按钮打开另一个对话框?多谢了,急急急!!!
电脑启动时弹出对话框
VC对话框的问题
VC 对话框资源
(跪求)vc++6.0基本对话框操作
VC++6.0中对话框中数据如何传递使用??
求助:VC++ 在对话框调用时显示很多的文字
vc下实现COM
VC++怎么实现打印
VC 实现打印?
vc中如何删除对话框?
vc中如何调用对话框
vc++怎样连接两个对话框
运行一个VC++ 基本对话框
vc 如何关闭当前对话框
vc 对话框按位置显示
服务器启动时弹出打开*.db对话框
我电脑启动时出现这个对话框