環境:VC6(MFC)
初心者です。
起動時にタスクトレイのみ表示し、
その後タスクトレイをクリック後、
ダイアログボックスを表示したいと思っています。
現在、ダイアログボックスを表示しないで
タスクトレイにアイコンを表示する所まではできたのですが、
タスクトレイのアイコンをクリックしても
ダイアログボックスが表示されません。
どの様にすれば良いのでしょうか?
ご教授お願いします。
以下ソースです。
/***************************************************************************
/
// testDlg.h
/***************************************************************************
/
class CTestDlg : public CDialog
{
public:
CTestDlg(CWnd* pParent = NULL); // 標準のコンストラクタ
protected:
HICON m_hIcon;
}
/***************************************************************************
/
// testDlg.cpp
/************************************************************************
/
BOOL CTestDlg::OnInitDialog()
{
m_nIcon.cbSize = sizeof(NOTIFYICONDATA) ;
m_nIcon.uID = 1 ;
m_nIcon.hWnd = m_hWnd ;
m_nIcon.uFlags = NIF_MESSAGE | NIF_ICON | NIF_TIP ;
m_nIcon.hIcon = AfxGetApp()->LoadIcon(IDI_ICON1);
m_nIcon.uCallbackMessage = WM_TRYCLK ;
::Shell_NotifyIcon(NIM_ADD, &m_nIcon);
SetWindowPos(&wndTop, 0, 0, 0, 0, SWP_HIDEWINDOW);
return TRUE; // TRUE を返すとコントロールに設定したフォーカスは失われ
ません。
}
/************************************************************************
/
// testDlg.cpp
/***************************************************************************
/
LRESULT CTestDlg::WindowProc(UINT message, WPARAM wParam, LPARAM lParam)
{
switch(message) {
case WM_TRYCLK:
switch(lParam) {
case WM_LBUTTONDOWN:
/*
ここで、ダイアログを表示したい
/*
SetWindowPos(AfxGetMainWnd(), 0, 0, 0, 0,
SWP_SHOWWINDOW);
break;
}
break;
}
}
/***************************************************************************
/
// test.rc
/***************************************************************************
/
EXSTYLE WS_EX_TOOLWINDOW
SetWindowPosでウィンドウサイズが0になってるのでは・・・!?