1. 程式人生 > >自己動手開發音樂播放器《八》迷你介面的實現

自己動手開發音樂播放器《八》迷你介面的實現

迷你介面可以使得音樂播放器更具美感,而實現迷你介面也不難,設定迷你介面主要用到 SetWindowPos函式

 SetWindowPos函式是改變視窗的大小和位置

BOOL WINAPI SetWindowPos(
  _In_      HWND hWnd,                             // 視窗控制代碼
  _In_opt_  HWND hWndInsertAfter,        //在z序中的位於被置位的視窗前的視窗控制代碼。該引數必須為一個視窗控制代碼,或下列值之一:
  _In_      int X,                                      // 視窗位置的左邊界
  _In_      int

Y,                                     //視窗位置的頂邊界
  _In_      int cx,                                  //視窗的寬度
  _In_      int cy,                                 //視窗的高度
  _In_      UINT uFlags:                    //視窗尺寸和定位的標誌。該引數可以是下列值的組合:
);

定義一個全域性變數用於音樂播放器中迷你型播放器的切換

/**************************************************************************
   設定迷你模式所需的全域性變數
**************************************************************************/
static int flag = 0;//標記音樂播放器為迷你模式

定義一個函式SetMiniMode用於切換成迷你型或非迷你型

/**************************************************************************
            函式名:   void SetMiniMode(HWND hwnd)
			函式功能: 設定迷你模式
**************************************************************************/
void SetMiniMode(HWND hwnd)
{
	//得到選單控制代碼
	HMENU hMenu = GetMenu(hwnd); 

	if(0 == flag)
	{
		//選中迷你模式
		CheckMenuItem(hMenu,ID_MENUMINIMODE,MF_CHECKED);

		//將視窗變成迷你模式視窗
		SetWindowPos(hwnd,0,122,75,385,445,SWP_NOMOVE | SWP_NOZORDER);

		flag = 1;//識別符號,標示視窗為普通視窗
	}
	else
	{
		//不選擇迷你模式
		CheckMenuItem(hMenu,ID_MENUMINIMODE,MF_UNCHECKED);

		//將視窗還原成普通視窗
		SetWindowPos(hwnd,0,122,75,615,495,SWP_NOMOVE | SWP_NOZORDER);

		flag = 0;//標示視窗為迷你視窗
	}
}

在void Main_OnCommand(HWND hwnd, int id, HWND hwndCtl, UINT codeNotify)中新增下面程式碼

		//迷你模式
		case ID_MENUMINIMODE:
		{
			SetMiniMode(hwnd);
		}
		break;

執行效果