mfc-ml

2005年06月

29

[mfc 51015] Re: 起動時にタスクバーにアイコンを表示させない

けいさん、GaGaCat さん
こんにちは、Onagi です。

アドバイスありがとうございます。
おかげさまで解決しました!!!

GaGaCat さんのメールのにあった WS_EX_TOOLWINDOW をキーワードにして
調べたところ次の処理を行う事で解決できました。

1.メインダイアログの拡張ウィンドウスタイル指定に WS_EX_TOOLWINDOW を追加。

    リソースファイルをエディタで編集して追加しました。

EXSTYLE ... | WS_EX_TOOLWINDOW


2.OnInitDialog でデフォルトで設定されている WS_EX_APPWINDOW を削除します。

BOOL CxxxxDlg::OnInitDialog()
{
    CDialog::OnInitDialog();
    ModifyStyleEx(WS_EX_APPWINDOW, 0);
    :


以上で タスクバーにアイコン(アプリケーション名)が表示されなくなりました。

タスクトレイにアイコンをセットしていますので、
プロパティに”起動時に最小化”を指定したショートカットから起動すると
タスクトレイにアイコンが表示され、タスクバーには何も表示されません。
これがやりたかったんです。

ちなみに、次の ページを参考に(報告内容そのまんまですが ^^;) させて頂きました。

   http://techtips.belution.com/ja/vc/0077/


アドバイスを頂きました皆様、ありがとうございました。
28

[mfc 51014] Re: [mfc 51012] Re:起動時にタスクバーにアイコンを表示させない

Onagiさん
こんにちは けいです。

自分が同じような物を作ったときはこんな感じにしました。
妥当かどうか自信ありませんけど・・・
※そもそもDoModal()したときに、ダイアログを非表示にすることは出来るのでしょうか?
 ダイアログベースではなくSDIで作るのが妥当なのかもしれません

******************************
BOOL CMyApp::InitInstance()
{
    InitCommonControls();

    CWinApp::InitInstance();

    MSG         stMSG;
    dlg.Create();
    m_pMainWnd = &dlg;  // ダイアログのハンドルを保存する
    while (::GetMessage(&stMSG, NULL, NULL, NULL)) {
        ::TranslateMessage(&stMSG);
        ::DispatchMessage(&stMSG);
    }
    dlg.DestroyWindow();

    return FALSE;
}

BOOL CMyDlg::Create()
{
    // 非表示のウィンドウを構築を表示しない
    if (FALSE == CWnd::Create(NULL, NULL, 0, CRect(0, 0, 0, 0), 
GetDesktopWindow(), 0)) {
        return  FALSE;
    }
    return TRUE;
}
******************************
----- Original Message ----- 
From: <i...@mail.goo.ne.jp>
To: <m...@ml.acty-net.ne.jp>
Sent: Tuesday, June 28, 2005 6:21 PM
Subject: [mfc 51012] Re:起動時にタスクバーにアイコンを表示させない
Subject: [mfc 51012] Re:起動時にタスクバーにアイコンを表示させない


> こなさん、
> こんにちは Onagi です。
>
> アドバイスありがとう御座います。
>
>> こなです。
>> タスクバーに表示させたくないなら、メインフレームを非表示にすればよいだけ
>> です。
>> MFCを使用したSDIなら、CxxxApp::InitInstance()関数において、
>>   ParseCommandLine()関数が呼ばれる前に、
>>   m_nCmdShow = SW_HIDE;
>> とし、m_pMainWnd->ShowWindow(SW_SHOW);の行をコメントアウトします。
>
> 情報不足で申し訳ありません。
> 実は、現在作成しているのは MFC ダイアログベースアプリケーションなのですが、 

> アドバイスを参考にしてMFCソースを少し追ってみたのですが解決できておりません。 

>
>> タスクトレイ関連は以下のHPを参考にしてください。
>> http://www.h4.dion.ne.jp/~fht/wptips/tray.html
>
> ありがとう御座います。
> 参考にさせて頂きます。
> タスクトレイのアイコン周りの処理はなんとか解決できている状況です。
>
> 以上、よろしくお願い致します。 
28

[mfc 51013] Re: 起動時にタスクバーにアイコンを表示させない

> 実は、現在作成しているのは MFC ダイアログベースアプリケーション
> なのですが、アドバイスを参考にしてMFCソースを少し追ってみた
> のですが解決できておりません。

昔作ったのはこんな感じ...

void CHogeDlg::OnShowWindow(BOOL bShow, UINT nStatus) 
{
    // 
    CDialog::OnShowWindow(bShow, nStatus);

    ////////////////////////////////////////
    // タスクバー上の存在を隠す
    //  拡張ウィンドウスタイルの取得
    long    lExStyle;

    lExStyle = GetWindowLong(GetSafeHwnd(), GWL_EXSTYLE);

    // WS_EX_TOOLWINDOWの指定
//  lExStyle |= WS_EX_TOOLWINDOW;
    lExStyle |= WS_EX_APPWINDOW;

    // 新しい拡張ウィンドウスタイルを設定
    SetWindowLong(GetSafeHwnd(), GWL_EXSTYLE, lExStyle);
        :
        :
}

ダメかしらん?


-----------
  GaGaCat
-----------
28

[mfc 51012] Re:起動時にタスクバーにアイコンを表示させない

こなさん、 
こんにちは Onagi です。

アドバイスありがとう御座います。

> こなです。
> タスクバーに表示させたくないなら、メインフレームを非表示にすればよいだけ
> です。
> MFCを使用したSDIなら、CxxxApp::InitInstance()関数において、
>   ParseCommandLine()関数が呼ばれる前に、
>   m_nCmdShow = SW_HIDE;
> とし、m_pMainWnd->ShowWindow(SW_SHOW);の行をコメントアウトします。

情報不足で申し訳ありません。
実は、現在作成しているのは MFC ダイアログベースアプリケーションなのですが、
アドバイスを参考にしてMFCソースを少し追ってみたのですが解決できておりません。

> タスクトレイ関連は以下のHPを参考にしてください。
> http://www.h4.dion.ne.jp/~fht/wptips/tray.html

ありがとう御座います。
参考にさせて頂きます。
タスクトレイのアイコン周りの処理はなんとか解決できている状況です。

以上、よろしくお願い致します。
28

[mfc 51011] Re:起動時にタスクバーにアイコンを表示させない

こなです。

タスクバーに表示させたくないなら、メインフレームを非表示にすればよいだけ
です。
MFCを使用したSDIなら、CxxxApp::InitInstance()関数において、
  ParseCommandLine()関数が呼ばれる前に、
  m_nCmdShow = SW_HIDE;
とし、m_pMainWnd->ShowWindow(SW_SHOW);の行をコメントアウトします。

タスクトレイ関連は以下のHPを参考にしてください。
http://www.h4.dion.ne.jp/~fht/wptips/tray.html

-- 
こな <k...@yahoo.co.jp>
記事検索
Amazon.co.jp
  • ライブドアブログ