关于改变窗口大小的问题?(跟贴有分) 通过鼠标可以调整窗口的边框,鼠标动窗口随着改变大小,如何让鼠标按下窗口不调整大小,当鼠标拖曳完毕,松开鼠标,窗口在触发onSize消息,调整到该大小。因为,我在窗口中有一个mFlexGrid控件,当调整窗口大小时mFlexGrid控件发生闪烁很严重。所以请大家帮忙 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 说个想法:在鼠标按下时设置一个标志位,在onsize中判断,如果标志位=true,就直接跳出松开鼠标时标志位=false,然后执行onsize,似乎还要加个标志位才行你试试不知道行不 上楼的老兄,我试了这个方法行不通,当进入onSize()方法时,不管是不是继续往下执行,窗口的大小都改变了 上楼的这位老兄,这个方法我试过了,行不通,当进入onSize方法时,不管是否继续往下执行,窗口的大小都改变了 可以试着注释掉基类的OnPaint();试了以后再说 如果注释掉基类的OnPaint(),大小也就没法改变了。 先把改变大小屏蔽,然后自己写个改变大小的函数,比如MouseMove到窗体边框,然后再取移动后的坐标,然后算出位移。再自己改变窗体大小。 也说个想法:重载PreCreateWindow()函数,截获WM_SIZE消息进行处理:根据鼠标按下标志位决定是否调用OnSize函数,你试试 BOOL CXXXX::PreTranslateMessage(MSG* pMsg) { if(pMsg->message==WM_LBUTTONDOWN) { m_Flag=false; } if(pMsg->message==WM_LBUTTONUP) { m_Flag=true; } if(pMsg->message==WM_SIZE) { if(!m_Flag) { return; } } return CXXXX::PreTranslateMessage(pMsg);}我这里是一个对话框的例子 重载PreTranslateMessage()BOOL CXXXX::PreTranslateMessage(MSG* pMsg) { if(pMsg->message==WM_LBUTTONDOWN) { m_Flag=false; } if(pMsg->message==WM_LBUTTONUP) { m_Flag=true; } if(pMsg->message==WM_SIZE) { if(!m_Flag) { return false; } } return CXXXX::PreTranslateMessage(pMsg);}我这里是一个对话框的例子 不好意思,应该是if(pMsg->message==WM_SIZE) { if(!m_Flag) { return true; } } 截获onsize,判断鼠标的状态,如果是鼠标按下,不执行任何操作,记录下位置,在鼠标松开消息中,根据记录的位置重设窗口 在WM_SIZING消息(OnSizing)里面再控制一把。 WM_SIZING(OnSizing())里再控制一把. 关于WinCE中使用滚动条时逻辑坐标与设备坐标转换的问题 FMC 代码理解?? 【求助】关于硬件的初始化问题,谢谢了 hook api BCB编的程序在C++中怎么运行 关于C++继承 关于编译器的一个问题 activex控件中有函数void func(&data) data为字符串类型,如何用vbscript和javascript调用? 自己写录音程序 初级问题 关于数据统计的问题 中英文字串的长度?在线等候
在鼠标按下时设置一个标志位,在onsize中判断,如果标志位=true,就直接跳出
松开鼠标时标志位=false,然后执行onsize,似乎还要加个标志位才行
你试试不知道行不
方法时,不管是不是继续往下执行,窗口的大小都改变了
然后再取移动后的坐标,然后算出位移。
再自己改变窗体大小。
重载PreCreateWindow()函数,截获WM_SIZE消息进行处理:根据鼠标按下标志位决定是否调用OnSize函数,你试试
{
if(pMsg->message==WM_LBUTTONDOWN)
{
m_Flag=false;
}
if(pMsg->message==WM_LBUTTONUP)
{
m_Flag=true;
}
if(pMsg->message==WM_SIZE)
{
if(!m_Flag)
{
return;
}
}
return CXXXX::PreTranslateMessage(pMsg);
}
我这里是一个对话框的例子
BOOL CXXXX::PreTranslateMessage(MSG* pMsg)
{
if(pMsg->message==WM_LBUTTONDOWN)
{
m_Flag=false;
}
if(pMsg->message==WM_LBUTTONUP)
{
m_Flag=true;
}
if(pMsg->message==WM_SIZE)
{
if(!m_Flag)
{
return false;
}
}
return CXXXX::PreTranslateMessage(pMsg);
}
我这里是一个对话框的例子
if(pMsg->message==WM_SIZE)
{
if(!m_Flag)
{
return true;
}
}