トップページ > 記事閲覧
通知領域
名前:さと 日時: 2016/06/08 12:45

管理人様、こんにちは いつもお世話になっております。 お手数をおかけする質問ですが、この下のURLの名称での ttp://askpc.panasonic.co.jp/beginner/guide/seven04.html 最小化しているタスクバーボタンを【通知領域】へ入れる方法はありますか? クリックすると最大化のウインドウ 又はなにかあったら最大化とか そんな感じになります。
メンテ

Page: 1 |

Re: 通知領域 ( No.1 )
名前:管理人 日時:2016/06/12 00:34

DXライブラリにタスクトレイにアイコンを登録する専用の機能はありませんが Win32API を直接使用することでご希望の処理を実現することは可能です 最小化ボタンが押されたらタスクトレイにソフトのアイコンが表示され、 ウインドウ自体はタスクバーから消え、タスクトレイに登録したアイコンをクリックしたら ウインドウが再度表示されるというサンプルプログラムを組んでみましたので、 よろしければご覧ください m(_ _)m #include "DxLib.h" // タスクトレイアイコン用のメッセージ値を保存する変数 UINT g_iTrayMsg ; // 0:通常表示状態 // 1:非表示状態 // 2:元に戻す処理を行う int g_WindowState ; // タスクトレイにアイコンを追加する void AddTrayIcon( void ) { NOTIFYICONDATA icndata; // 構造体初期化 memset( &icndata, 0, sizeof( icndata ) ) ; icndata.cbSize = sizeof( icndata ) ; // メインウィンドウのハンドルをセット icndata.hWnd = GetMainWindowHandle() ; // アイコンをセット icndata.hIcon = LoadIcon( NULL, IDI_APPLICATION ); // システムトレーからの通知メッセージをセット icndata.uCallbackMessage = g_iTrayMsg ; // フラグをセット icndata.uFlags = NIF_MESSAGE | NIF_ICON | NIF_TIP ; // アイコンを追加 Shell_NotifyIcon( NIM_ADD, &icndata ) ; } // タスクトレイに追加したアイコンを削除する void RemoveTrayIcon( void ) { NOTIFYICONDATA icndata; // 構造体初期化 memset( &icndata, 0, sizeof( icndata ) ) ; icndata.cbSize = sizeof( icndata ) ; // メインウィンドウのハンドルをセット icndata.hWnd = GetMainWindowHandle() ; // アイコンを削除 Shell_NotifyIcon( NIM_DELETE, &icndata ) ; } // タスクトレイに登録したアイコンのメッセージを処理するためのプロージャ LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam) { // タスクトレイに登録したアイコンのメッセージのみ処理する if( msg == g_iTrayMsg ) { // 左クリックがされたら処理する if( lParam == WM_LBUTTONUP ) { // ウインドウを表示状態に戻す ShowWindow( GetMainWindowHandle(), SW_RESTORE ) ; // ウインドウの状態を表示状態に戻す処理を行う状態にする g_WindowState = 2 ; } } return 0; } // WinMain int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) { // ウインドウモードで起動 ChangeWindowMode( TRUE ) ; // 非アクティブになっても処理を止めないようにする SetAlwaysRunFlag( TRUE ) ; // DXライブラリの初期化 if( DxLib_Init() < 0 ) return -1 ; // 描画先を裏画面にする SetDrawScreen( DX_SCREEN_BACK ) ; // タスクトレイアイコンのメッセージ処理用のプロージャをセットする SetHookWinProc( WndProc ) ; // タスクトレイに登録するアイコンのメッセージ値を取得する g_iTrayMsg = RegisterWindowMessage( "DxLibIconNotify" ) ; // メインループ while( ProcessMessage() == 0 ) { // 画面のクリア ClearDrawScreen() ; // 四角形を描画 DrawBox( 0,0,128,128,GetColor(255,255,255), TRUE ) ; // ウインドウの状態によって処理を分岐 switch( g_WindowState ) { case 0: // 通常表示状態 // 通常表示状態中に最小化されたら、ウインドウを非表示にしてタスクトレイにアイコンを追加する if( GetWindowMinSizeFlag() ) { // ウインドウを非表示にする ShowWindow( GetMainWindowHandle(), SW_HIDE ) ; // タスクトレイにアイコンを追加 AddTrayIcon() ; // 非表示状態 g_WindowState = 1 ; } break; case 2: // 元に戻す処理を行う // タスクトレイからアイコンを削除する RemoveTrayIcon(); // ウインドウを前面に表示する SetForegroundWindow( GetMainWindowHandle() ) ; // 通常表示状態に設定する g_WindowState = 0 ; break; } // 裏画面の内容を表画面に反映 ScreenFlip() ; } // DXライブラリの後始末 DxLib_End() ; // ソフトの終了 return 0 ; }
メンテ
Re: 通知領域 ( No.2 )
名前:さと(解決) 日時:2016/06/20 20:23

いつもお世話になっております。 お手数をおかけして申し訳ありませんでした。 サンプルプログラムをありがとうございました。 さっそくサンプルを動かして挙動を確認しました。 まさにこれです! 使ってみます。 問題解決とさせて頂きます。
メンテ

Page: 1 |

題名
名前
コメント
パスワード (記事メンテ時に使用)

   クッキー保存