MFC 有图层吗?

Simmons_Song 2015-07-25 05:28:08
我创建了一个SDI程序,我想在其弹出的登录对话框验证通过之后,显示出表格,而且不同身份的人登陆在相同位置显示的对话框不同。
但是如果在程序运行就创建list conctrl 控件,然后调用showwindow的话的话,会盖住后创建的。。。
到底该怎么办???,大神求助啊!!!!!!
...全文
407 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2015-07-27
  • 打赏
  • 举报
回复
引用 21 楼 qq_29726609 的回复:
解决了,马虎了,少加了一个showwidow。。。 谢谢各位大神
又马虎了,ShowWindow拼错了! 关于自己是否适合编程的很简单的测试: 在报纸或杂志上随便找一段约1000字的文章,在Word中输入一遍。输完后再参考下面答案: A里面有10处以上文字或标点错误 B里面没有文字或标点错误并敢为此跟人打赌 C里面没有文字或标点错误并且字体和排版完全与原稿一致 D打印在半透明的纸上和原稿重叠在一起检查一模一样,且自我感觉很有成就感 A不适合编程(理由:打字准确度偏低、粗心大意) B初级程序员(理由:打字准确度很高、认真细致、自信、理解全角半角概念) C高级程序员(理由:在B的基础上理解字体和排版也是电脑打印的重要因素、但相比D还不够偏执、精益求精、结果可验证) D软件项目经理(理由:能针对项目给出令人信服的细致到极点的需求说明和典型测试用例。用户几乎挑不出毛病。专业!) 如果想从A变成B的话,到我的资源http://download.csdn.net/detail/zhao4zhong1/4084259里面下载“适合程序员的键盘练习”
Sandrer 2015-07-26
  • 打赏
  • 举报
回复
所以id号较高的那个, 或者最后创建的那个窗口会最画 这个说错了, 是最画 还有如果你设置过它们的zorder顺序的话, 就按这个顺序来, 忽略id或者创建顺序
Sandrer 2015-07-26
  • 打赏
  • 举报
回复
windows 暂时没听过分层 但是窗口的绘制过程是按顺序绘制 没特殊设置的话都是从低id号到高id号开始画, 没有id号的话就按窗口的创建顺序先建先画 所以id号较高的那个, 或者最后创建的那个窗口会最先画 等到画后面的那些内容, 如果和前面的窗口有重叠的画就会覆盖前面的内容咯 好比你在一张画纸上先画红色, 再画绿色, 再画蓝色, 结果你能看到的就只有蓝色了, 前面两种颜色已经被覆盖掉了 解决方法上面都有人说过了, 让你把所需的列表都先创建出来, 但不显示(create 的时候不加 ws_visible 属性) 等你做好了判断知道了那个需要显示的时候, 再 showwindow 那个列表, 参数用 SW_SHOW
Simmons_Song 2015-07-26
  • 打赏
  • 举报
回复
什么意思?我不知道为何我有的动态创建的控件showwindow显示不出来
schlafenhamster 2015-07-26
  • 打赏
  • 举报
回复
最好用一个 listctrl 不同用户 填不同的内容
Simmons_Song 2015-07-26
  • 打赏
  • 举报
回复
这跟ID有关系吗?
Simmons_Song 2015-07-26
  • 打赏
  • 举报
回复
为什么我在相同位置创建的列表只能显示出一个?还不是最先建的那个???
Simmons_Song 2015-07-26
  • 打赏
  • 举报
回复
这样后创建的ListCtrl不会被覆盖住吗?
Simmons_Song 2015-07-26
  • 打赏
  • 举报
回复
解决了,马虎了,少加了一个showwidow。。。 谢谢各位大神
Simmons_Song 2015-07-26
  • 打赏
  • 举报
回复
懂了,但是鼠标移过的时候,又回到第一个表格了怎么办?是跟焦点有吗?
gz_qmc 2015-07-25
  • 打赏
  • 举报
回复
如果你登录的时候,还没创建控件 那么你就用三个变量先保存 比如 BOOL s1,s2,s3; 创建完成后 GetDlgItem(IDC_LIST1)->ShowWindow(s1); GetDlgItem(IDC_LIST2)->ShowWindow(s2); GetDlgItem(IDC_LIST3)->ShowWindow(s3);
gz_qmc 2015-07-25
  • 打赏
  • 举报
回复
你做几个ListCtrl控件 取得控件的窗口指针 然后显示那个,那个就TRUE,其他FALSE 比如: IDC_LIST1,IDC_LIST2,IDC_LIST3 登录 { 如果用户1: GetDlgItem(IDC_LIST1)->ShowWindow(TRUE); GetDlgItem(IDC_LIST2)->ShowWindow(FALSE); GetDlgItem(IDC_LIST3)->ShowWindow(FALSE); else 如果用户2: GetDlgItem(IDC_LIST1)->ShowWindow(FALSE); GetDlgItem(IDC_LIST2)->ShowWindow(TRUE); GetDlgItem(IDC_LIST3)->ShowWindow(FALSE); else 如果用户1: GetDlgItem(IDC_LIST1)->ShowWindow(FALSE); GetDlgItem(IDC_LIST2)->ShowWindow(FALSE); GetDlgItem(IDC_LIST3)->ShowWindow(TRUE); }
阿源是少年 2015-07-25
  • 打赏
  • 举报
回复
引用 9 楼 qq_29726609 的回复:
简单点说,我只是想实现点击不同的按钮,显示不同的list conctrl 控件而已
你点击时需要手动隐藏不相关的listctrl
CWnd::ShowWindow
BOOL ShowWindow( int nCmdShow );
ShowWindow(SW_HIDE)
Simmons_Song 2015-07-25
  • 打赏
  • 举报
回复
简单点说,我只是想实现点击不同的按钮,显示不同的list conctrl 控件而已
Simmons_Song 2015-07-25
  • 打赏
  • 举报
回复
谁说我只会拖拖控件
阿源是少年 2015-07-25
  • 打赏
  • 举报
回复
引用 6 楼 worldy 的回复:
[quote=引用 3 楼 pcradio 的回复:] 需要自己写逻辑,不是你拖拖控件就可以了
大侠帮他写一些逻辑吧,让他拖拖控件就好[/quote]
worldy 2015-07-25
  • 打赏
  • 举报
回复
引用 3 楼 pcradio 的回复:
需要自己写逻辑,不是你拖拖控件就可以了
大侠帮他写一些逻辑吧,让他拖拖控件就好
阿源是少年 2015-07-25
  • 打赏
  • 举报
回复
你把登录显示搞成DoModal(),Domodal的位置放在BOOL CAweaApp::InitInstance()开头,这样你对话框没关闭,SDI窗口也不会显示,在你Domodal返回后,把输入的值传给CWinApp里你自定义的结构里,SDI在OnDraw里面画
Simmons_Song 2015-07-25
  • 打赏
  • 举报
回复
我就是想问要怎么写,SDI几乎所有的控件都是自己动态创建的。。。
阿源是少年 2015-07-25
  • 打赏
  • 举报
回复
需要自己写逻辑,不是你拖拖控件就可以了
加载更多回复(2)

16,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧