1. 程式人生 > >MFC 小知識總結四

MFC 小知識總結四

list 音樂 star tor open details cli wav mage

1 PlaySound 播放WAV格式的音樂

This function plays a sound specified by a file name, resource, or system event.

<strong>BOOL WINAPI PlaySound( 
  LPCSTR</strong> <em><a target=_blank class="synParam" href="http://write.blog.csdn.net/postedit" style="color: rgb(255, 153, 0); text-decoration: none;">pszSound</a></em><strong>, 
  HMODULE</strong> <em><a target=_blank class="synParam" href="http://write.blog.csdn.net/postedit" style="color: rgb(255, 153, 0); text-decoration: none;">hmod</a></em><strong>, 
  DWORD</strong> <em><a target=_blank class="synParam" href="http://write.blog.csdn.net/postedit" style="color: rgb(255, 153, 0); text-decoration: none;">fdwSound</a> </em>
<strong>)</strong>;


頭文件

[cpp] view plaincopy
  1. #include < Mmsystem.h>


播放音樂

[cpp] view plaincopy
  1. PlaySound(L"1.wav", NULL, SND_ASYNC | SND_FILENAME );

// SND_ASYNC 異步播放 即: 運行完這一句。直接運行下一條語句 ,播放交由播放器播放著

// SND_SYNC 同步播放 即: 運行這一語句後。先不運行下一條語句。而是等播放器播放完這段音樂後。再運行下一條語句


循環播放

[cpp] view plaincopy
  1. PlaySound(currentDirectory, NULL, SND_ASYNC | SND_FILENAME |SND_LOOP);

停止播放

[cpp] view plaincopy
  1. PlaySound(NULL, NULL, SND_ASYNC | SND_FILENAME );


2 對話框初始化後立即進行的操作


假設把諸多操作都放在初始化中,那麽,對話框須要非常長時間才完畢初始化。 因此。對話框會延遲出現。不能及時蹦出。

方法一 : 設置定時器

[cpp] view plaincopy
  1. SetTimer(1,50,NULL);

方法二:PostMessage() 發送消息 通知初始化完畢

3 更新對話框上 某幾個控件的值

[cpp] view plaincopy
  1. void UPDATE(){
  2. UpdateData(FALSE);
  3. GetDlgItem(IDC_COMBO2)->RedrawWindow();
  4. GetDlgItem(IDC_EDIT2)->RedrawWindow();
  5. GetDlgItem(IDC_EDIT3)->RedrawWindow();
  6. GetDlgItem(IDC_EDIT4)->RedrawWindow();
  7. };

4 在屏幕上畫圖


[cpp] view plaincopy
  1. Bitmap bmp(400,100);
  2. Graphics grp(&bmp); // 先繪制在位圖中
  3. CWindowDC dc(CWnd::GetDesktopWindow());
  4. Graphics gDeskTop(dc.GetSafeHdc()); //將位圖繪制在屏幕中

[cpp] view plaincopy
  1. grp.FillRectangle(&backBrush,0,0,400,100);
  2. grp.DrawString(
  3. string.GetBuffer(),
  4. string.GetLength(),
  5. &myFont,
  6. rect,
  7. &format,
  8. &brush );
  9. gDeskTop.FillRectangle(&backBrush,0,0,400,100);
  10. gDeskTop.DrawImage(&bmp,0,0,400,100);


5 check box control 設置選中狀態。並將其默認 不能再選擇

[cpp] view plaincopy
  1. CButton CheckButton; //關聯一變量

[cpp] view plaincopy
  1. m_CheckButton.SetCheck(1); //選中
  2. m_CheckButton.EnableWindow(FALSE); //不能再選


6 CFileDialog顯示兩種擴展名

[cpp] view plaincopy
  1. CFileDialog dlg(TRUE,NULL,NULL,0,"圖片文件(*.jpg;*.bmp)|*.jpg;*.bmp||",this);///TRUE為OPEN對話框,FALSE為SAVE AS對話框


7 去掉標題欄的語句

[cpp] view plaincopy
  1. //去除標題和邊框
  2. SetWindowLong(m_hWnd, GWL_STYLE, GetWindowLong(m_hWnd, GWL_STYLE)&(~(WS_CAPTION | WS_BORDER)));
  3. // 置對話框為最頂端並擴充到整個屏幕
  4. ::SetWindowPos(m_hWnd, HWND_TOPMOST, -(GetSystemMetrics(SM_CXBORDER)+1),
  5. -(GetSystemMetrics(SM_CYBORDER)+1), cx+1,cy+1, SWP_NOZORDER);
  6. 還原標題欄和邊框
  7. SetWindowLong(this-> GetSafeHwnd(), GWL_STYLE, GetWindowLong(m_hWnd,GWL_STYLE) + (WS_CAPTION|WS_BORDER) );
  8. ::SetWindowPos(m_hWnd, HWND_TOPMOST, 500, 300, 600,500, SWP_SHOWWINDOW);

8 推斷按下CTL+V組合鍵


[cpp] view plaincopy
  1. BOOL CRichEditDlg::PreTranslateMessage(MSG* pMsg)
  2. {
  3. if (pMsg->message==WM_KEYDOWN)
  4. {
  5. if (pMsg->wParam==‘V‘&&(GetKeyState(VK_CONTROL)<0))//按下CTRL+V
  6. {
  7. OnPaste();
  8. return TRUE;//直接返回 要不然會響應系統的粘貼消息 從而導致粘貼2遍
  9. }
  10. }
  11. //
  12. }

轉自:http://blog.csdn.net/shuilan0066/article/details/8727113

MFC 小知識總結四