注意是WINAPI,不是MFC...
         // ...         // WIN_WIDTH==640, WIN_HEIGHT==480 
RECT rc;
SetRect( &rc, 0, 0, WIN_WIDTH, WIN_HEIGHT );
AdjustWindowRect( &rc, WS_OVERLAPPEDWINDOW & (~WS_SIZEBOX),   0);
g_hwnd = CreateWindowEx(
NULL,
WINDOW_CLASS,
WINDOW_NAME,
// 禁止最大化,且不可调节窗口大小
WS_OVERLAPPEDWINDOW & (~WS_SIZEBOX), 
0, 0,
( rc.right - rc.left ), ( rc.bottom - rc.top ),
NULL,
NULL,
h,
NULL
);          // ....窗口风格那,只要写上"(~WS_SIZEBOX)",窗口的X坐标最小值就成了65535了,
如果这是必然的话,那有没有其他方法,既禁止改变窗口大小,又能正常显示窗口X坐标的??

解决方案 »

  1.   

    使用WS_OVERLAPPED或WS_TILED 风格就没有了最大最小化
      

  2.   

    这个可以://///////////去除最大化窗口项和锁定窗口/////////////////
    SetWindowLong(hWnd,GWL_STYLE,GetWindowLong(hWnd,GWL_STYLE) & ~WS_MAXIMIZEBOX & ~WS_THICKFRAME );
      

  3.   

    你先说一下你以为 
    WS_OVERLAPPEDWINDOW & (~WS_SIZEBOX), 
    到底是什么意思吧!!
      

  4.   

    // 禁止最大化,且不可调节窗口大小
    WS_OVERLAPPEDWINDOW & (~WS_SIZEBOX), 什么意思这里不是写了么??我问为什么屏蔽了调节窗口大小的功能后,当鼠标移动到窗口边框上时,X坐标显示65535常规情况下,假如分辨率是640X480鼠标坐标从客户区开始,应该是从0到639.
    但是我这在左右边框上也会显示X坐标,左面显示65535,右面显示641,而且不是640,因为最大值就是639....
    非常奇怪...
      

  5.   

    你知道窗口在创建的时候,假设是800*600,默认为了画边框,系统会在这个800*600的边框要inflaterect,左边的屏幕坐标假设为100,200,边框就变成了99,200,再转换成客户坐标,-100,不就变成-41
      

  6.   


    关键问题是,当屏蔽了调节窗口大小的功能后,在窗口显示XY坐标,就会多出两个边框的值.左边框处X就成了65535,右边框处X坐标显示641这个是否无法避免..???