由于呢个对话框资源在用之前 在属性对话页面已经设置了 Border属性为None. Style属性为Child
因为我是把这种对话框放到我的CTab页面中现在,我又有其他需要重新Create一个这样的对话框用做其他用途显示.
所以我在主对话框的一个按钮里这样做了:
void CMYmainDlg::::Onbutton1()
{
bool static bcreate=true; //只新建一个
static CSheetPage page1; //CSheetPage为用这对话框生成的类
page1.pagename=strTemp; //一个成员变量而已
if (bcreate )
{
page1.Create(CSheetPage::IDD,NULL);//在这里我用了this,GetParent(),NULL效果都一样
page1.ModifyStyle(WS_CHILD,WS_POPUP|WS_BORDER|WS_VISIBLE|WS_DLGFRAME|WS_MINIMIZEBOX,0 );//应该是这里,//但我也都尝试了好多种值了
page1.ModifyStyleEx(0,WS_EX_TOPMOST,0); bcreate=false;
} page1.ShowWindow(SW_HIDE);//这里我打算先把他隐藏再弹出都不行
page1.ShowWindow(SW_SHOW);
page1.SetWindowText(strTemp);
page1.SetWindowPos(&wndTop,0,15,0,0,SWP_NOSIZE|SWP_SHOWWINDOW);
//page1.DrawList();//一个自己的函数不影响的,与题目无关
page1.Invalidate();//没用依然被下面的按钮覆盖那部分
}
现在就是弹出时,界面被下层的按钮画花了~就算移动后一点下层的主对话框,界面又花了,最小化还原有一样花~
应该如何解决~
因为我是把这种对话框放到我的CTab页面中现在,我又有其他需要重新Create一个这样的对话框用做其他用途显示.
所以我在主对话框的一个按钮里这样做了:
void CMYmainDlg::::Onbutton1()
{
bool static bcreate=true; //只新建一个
static CSheetPage page1; //CSheetPage为用这对话框生成的类
page1.pagename=strTemp; //一个成员变量而已
if (bcreate )
{
page1.Create(CSheetPage::IDD,NULL);//在这里我用了this,GetParent(),NULL效果都一样
page1.ModifyStyle(WS_CHILD,WS_POPUP|WS_BORDER|WS_VISIBLE|WS_DLGFRAME|WS_MINIMIZEBOX,0 );//应该是这里,//但我也都尝试了好多种值了
page1.ModifyStyleEx(0,WS_EX_TOPMOST,0); bcreate=false;
} page1.ShowWindow(SW_HIDE);//这里我打算先把他隐藏再弹出都不行
page1.ShowWindow(SW_SHOW);
page1.SetWindowText(strTemp);
page1.SetWindowPos(&wndTop,0,15,0,0,SWP_NOSIZE|SWP_SHOWWINDOW);
//page1.DrawList();//一个自己的函数不影响的,与题目无关
page1.Invalidate();//没用依然被下面的按钮覆盖那部分
}
现在就是弹出时,界面被下层的按钮画花了~就算移动后一点下层的主对话框,界面又花了,最小化还原有一样花~
应该如何解决~
解决方案 »
- fatal error LNK1120: 2 个无法解析的外部命令
- QQ群,哈尔滨软件开发群,欢迎哈尔滨的程序员加入
- CInternetSession 读取网页内容的问题
- AddRequestHeaders中的参数是怎么确定的啊?
- 穷人菜菜鸟求帮助。。。。在哪里有_bstr_t的帮助呀?想看它的方法属性!最好是给个MSDN的网址~
- 为什么打开qqgame房间的时候 端口总是80, 为什么会这样, 难道qqgame一个物理服务器,就放一个gameserver???
- 赋值给sheet类的问题
- 在VC++里怎样映射内存??
- 高手请进!一个值得一看的难题:)
- 如何得到网卡的序列号
- 我用MFC 开发了一个控件,实现多线程下载的,但是总是在IE关闭,下载线程没有停止的时候出现异常!
- CSerialPort串口类初始化Initport()总是失败
page1.ModifyStyle(0,WS_OVERLAPPED|WS_BORDER|WS_VISIBLE|WS_DLGFRAME|WS_MINIMIZEBOX,0 );
都不行~我都试过几多~
还有其他吗?
还是有其他解决方法?
page1.ModifyStyle(WS_CHILD,WS_POPUP ¦WS_BORDER ¦WS_VISIBLE ¦WS_DLGFRAME ¦WS_MINIMIZEBOX,0 );//
好像也没起效果~主对话框的ONPAINT没有做任何修改~
要弹出的那个对话框类没有重载ONPAINT();问题是~我按按钮后弹出这个修改过格式的对话框,始终都没能弹在主对话框的最前面~,移动这个弹出框,发现它的边界依然只能在主对话框内移动~不能移出主对话框的边界,移出部分被剪切了,,,而我其他的资源对话框的弹出就能移动出主对话框的矩形大小范围(当然这时STYLE不为Child)... 这是问题关键了,,我就是想在程序中将其改变,,,,
如果用SetWindowsLong()
是不是这样:
SetWindowLong(page1.GetSafeHwnd(),WS_OVERLAPPEDWINDOW,GWL_STYLE);//好像更不起效果
我之前查了一下可以在
PreCreateWindow()
或
PreSubclassWindow()
中改变style
用个变量判断改与不改~
我觉得麻烦~不想重载函数而已~如何用SetParent可以做到啊~ 请教~~
page1.GetWindowRect(&rt);
page1.ModifyStyle(WS_CHILD, ……
page1.SetParent(NULL);
page1.MoveWindow(&rt);
这种做法无法保证子窗口一直在父窗口前面。
重载函数都是在CreateWindow之后才被调用的,来不及去掉WS_CHILD风格。
不知道你为什么不再做个对话框资源,有这时间早就处理完了。