|
画面の端に近づいたら吸着する |
|
void CMyDlg::OnWindowPosChanging(WINDOWPOS* lpwndpos) { CDialog::OnWindowPosChanging(lpwndpos); // TODO : ここにメッセージ ハンドラ コードを追加します。 int m_nAttachSize = 10; // メンバ変数として別途宣言する // 有効画面サイズを取得する CRect rcDesktop; ::SystemParametersInfo(SPI_GETWORKAREA, 0, &rcDesktop, 0); // 画面の端に近づいたかを判断する(近ければ吸着させる) if (lpwndpos->x < rcDesktop.left + m_nAttachSize) lpwndpos->x = rcDesktop.left; if (lpwndpos->y < rcDesktop.top + m_nAttachSize) lpwndpos->y = rcDesktop.top; if ((lpwndpos->x + lpwndpos->cx + m_nAttachSize) > rcDesktop.right) lpwndpos->x = rcDesktop.right - lpwndpos->cx; if ((lpwndpos->y + lpwndpos->cy + m_nAttachSize) > rcDesktop.bottom) lpwndpos->y = rcDesktop.bottom - lpwndpos->cy; } |