user-0 提问: 如何实现窗口单边拉长？

回复:
user: user-0
content: 引用 3 楼 Intel0011 的回复:另外，这样也可以  case WM_NCHITTEST: //去除左右边框箭头显示，所以无法横向拉动窗口     {       LRESULT b = DefWindowProc(hwnd, message, wParam, lParam);       if (b == HTLEFT || b == HTRIGHT)          return 0;       else          return b;    } 引用 1 楼 Intel0011 的回复: hwnd = CreateWindowEx(WS_EX_APPWINDOW,                          szAppName,                  // window class name                          TEXT("The Hello Program"),  // window caption                          WS_OVERLAPPEDWINDOW & ~WS_MAXIMIZEBOX, // 去除最大化                          500,//CW_USEDEFAULT,              // initial x position                          200,//CW_USEDEFAULT,              // initial y position                          320,//CW_USEDEFAULT,              // initial x size                          320,//CW_USEDEFAULT,              // initial y size                          NULL,                       // parent window handle                          NULL,                       // window menu handle                          hInstance,                  // program instance handle                          NULL);                      // creation parameters //消息处理函数中加入以下代码 case WM_GETMINMAXINFO:          ((LPMINMAXINFO)lParam)->ptMinTrackSize.x = 320;          ((LPMINMAXINFO)lParam)->ptMaxTrackSize.x = 320;          return 0;  厉害了，试了下，这的确是最完美的方案

user: user-0
content: 引用 7 楼 轻箬笠 的回复:[quote=引用 6 楼 六道佩恩 的回复:] 这个5是边界的范围吗？ 是的[/quote] 我自己就是用的这种方法，减小之后就放大到指定大小，但这个时候鼠标仍没有松，继续缩小，窗口就继续回弹，然后就会出现一闪一闪的抽风现象

user: user-1
content: 引用 6 楼 六道佩恩 的回复:这个5是边界的范围吗？ 是的

user: user-0
content: 引用 5 楼 轻箬笠 的回复:是不是类似上面这样就满足楼主的要求了，如果不想拉伸的，只要返回HTCLIENT就可以了。 比如左侧不想拉伸 if(point.x <= rect.left + 5)  {   return HTCLIENT;  } 这个5是边界的范围吗？

user: user-1
content: LRESULT CtestDlg::OnNcHitTest(CPoint point) {  // TODO: 在此添加消息处理程序代码和/或调用默认值  CRect rect;  GetWindowRect(&rect);  if(point.x <= rect.left + 5 && point.y <= rect.top + 5)  {   return HTTOPLEFT;  }  else if(point.x >= rect.right - 5 && point.y <= rect.top + 5)  {   return HTTOPRIGHT;  }  else if(point.x <= rect.left + 5 && point.y >= rect.bottom - 5)  {   return HTBOTTOMLEFT;  }  else if(point.x >= rect.right - 5 && point.y >= rect.bottom - 5)  {   return HTBOTTOMRIGHT;  }  else if(point.x <= rect.left + 5)  {   return HTLEFT;  }  else if(point.x >= rect.right - 5)  {   return HTRIGHT;  }  else if(point.y <= rect.top + 5)  {   return HTTOP;  }  else if(point.y >= rect.bottom - 5)  {   return HTBOTTOM;  }  return CDialog::OnNcHitTest(point); } 是不是类似上面这样就满足楼主的要求了，如果不想拉伸的，只要返回HTCLIENT就可以了。 比如左侧不想拉伸 if(point.x <= rect.left + 5)  {   return HTCLIENT;  }

user: user-0
content: 引用 2 楼 user-3 的回复:捕捉鼠标点击消息～当他单击到你设备两侧时你销毁这个消息 左侧是不是得有个范围？

user: user-2
content: 另外，这样也可以  case WM_NCHITTEST: //去除左右边框箭头显示，所以无法横向拉动窗口     {       LRESULT b = DefWindowProc(hwnd, message, wParam, lParam);       if (b == HTLEFT || b == HTRIGHT)          return 0;       else          return b;    }

user: user-3
content: 捕捉鼠标点击消息～当他单击到你设备两侧时你销毁这个消息

user: user-2
content: hwnd = CreateWindowEx(WS_EX_APPWINDOW,                          szAppName,                  // window class name                          TEXT("The Hello Program"),  // window caption                          WS_OVERLAPPEDWINDOW & ~WS_MAXIMIZEBOX, // 去除最大化                          500,//CW_USEDEFAULT,              // initial x position                          200,//CW_USEDEFAULT,              // initial y position                          320,//CW_USEDEFAULT,              // initial x size                          320,//CW_USEDEFAULT,              // initial y size                          NULL,                       // parent window handle                          NULL,                       // window menu handle                          hInstance,                  // program instance handle                          NULL);                      // creation parameters //消息处理函数中加入以下代码 case WM_GETMINMAXINFO:          ((LPMINMAXINFO)lParam)->ptMinTrackSize.x = 320;          ((LPMINMAXINFO)lParam)->ptMaxTrackSize.x = 320;          return 0;