VisualC++ J'va y penser ... | RE, donc comme dit voici un code que j'utilise (enfin celui la c pour une Dialog based app)
Ds le OnInitDialog de ma Dlg principale
Code :
- ......
- // Get all stored values from Option
- theApp.GetValueFromREgistry(this);
- // Setup the tray icon
- m_ptrayIcon->SetNotificationWnd(this, WM_MY_TRAY_NOTIFICATION);
- m_ptrayIcon->SetIcon(AfxGetApp()->LoadIcon(IDI_MYICON), NULL);
- if (m_bMinimize) {
- PostMessage(WM_SYSCOMMAND, SC_MINIMIZE);
- }
- return TRUE;
|
Le m_bMinimize est recup ds la base de registre a chaque demarage donc suivant option de l'user.
Ds le OnSysCommand
Code :
- void CMyMainDlg::OnSysCommand(UINT nID, LPARAM lParam)
- {
- if ((nID & 0xFFF0) == IDM_ABOUTBOX) {
- CWinThread* pThread = AfxBeginThread(RUNTIME_CLASS(CAboutDlgThread));
- }
- else if ((nID & 0xFFF0) == SC_CLOSE) {
- // Overload default behaviour
- OnShowWindow(FALSE, SW_PARENTCLOSING);
- }
- else if ((nID & 0xFFF0) == SC_MINIMIZE) {
- // Overload default behaviour
- OnShowWindow(FALSE, SW_PARENTCLOSING);
- }
- else
- {
- CDialog::OnSysCommand(nID, lParam);
- }
- }
|
Et les OnShow reecrit
Code :
- void CMyMainDlg::OnShowWindow(BOOL bShow, UINT nStatus)
- {
- if (nStatus == SW_PARENTCLOSING) {
- ShowWindow(SW_MINIMIZE);
- ShowWindow(SW_HIDE);
- }
- else if (nStatus == SW_PARENTOPENING) {
- ShowWindow(SW_NORMAL);
- }
- else
- CDialog::OnShowWindow(bShow, nStatus);
- }
- void CMyMainDlg::OnRestore()
- {
- OnShowWindow(TRUE, SW_PARENTOPENING);
- }
|
Le OnRestore est declenché ssur un ID a moi qui est l'ID d'une entree Restaurer la fenêtre ds le menu accessible bouton droit sur mon trayicon.
Voila j'espere que ca t aidera. |