Ребята !!!!!!
В виндах по жизне стили менялись, меняются и будут меняться через:
LONG SetWindowLong(          HWND hWnd,
    int nIndex,
    LONG dwNewLong
);
nIndex = GWL_STYLE
Да нууу!. 

  И это поможет в данном случае?  
 
 Кстати вот что такое ModifyStyle
BOOL PASCAL
CWnd::ModifyStyle(HWND hWnd, DWORD dwRemove, DWORD dwAdd, UINT nFlags)
{
   return _AfxModifyStyle(hWnd, GWL_STYLE, dwRemove, dwAdd, nFlags);
}
AFX_STATIC BOOL AFXAPI _AfxModifyStyle(HWND hWnd, int nStyleOffset,
   DWORD dwRemove, DWORD dwAdd, UINT nFlags)
{
   ASSERT(hWnd != NULL);
   DWORD dwStyle = ::GetWindowLong(hWnd, nStyleOffset);
   DWORD dwNewStyle = (dwStyle & ~dwRemove) | dwAdd;
   if (dwStyle == dwNewStyle)
      return FALSE;   
::SetWindowLong(hWnd, nStyleOffset, dwNewStyle);   if (nFlags != 0)
   {
      ::SetWindowPos(hWnd, NULL, 0, 0, 0, 0,
         SWP_NOSIZE | SWP_NOMOVE | SWP_NOZORDER | SWP_NOACTIVATE | nFlags);
   }
   return TRUE;
}
Finch, сорри, не успевал следить за всеми постами, и вопрос упустил из вида. На самом деле всё дело в MFC ( Вижуал Си если ты это имел ввиду). Это и есть врапер (wrapper) или обёртка для API. Один из основных моментов как раз и заключается в том, что хэндл окна засовывается в класс (CWnd) и все производные классы вызывают "обёрточные" функции не заботясь о нужном хэндле.
В частности GetDlgItem вызванная из производного CDialog класса
пользуется сохранённым при Create хэндлом. В принципе все исходники MFC открыты и достаточно заглянуть в них, чтоб увидеть что там происходит:
CWnd* CWnd::GetDlgItem(int nID) const
{
   ASSERT(::IsWindow(m_hWnd));
   if (m_pCtrlCont == NULL)
      return CWnd::FromHandle(
::GetDlgItem(m_hWnd, nID));
   else
      return m_pCtrlCont->GetDlgItem(nID);
}