无法隐藏CDialog派生类中的MFC控件

时间:2017-08-30 05:04:08

标签: c++ mfc

我有一个对话框,它是从我们从CDialog类派生的特定基类派生而来的 该对话框包含一个带有组合框项目的组合框(字符串) 还有一个组合框,标签,复选框和一个文本框(我将其称为分组控件,用于此讨论) 如果我从组合框中选择索引0中的项目,则会显示Grouped控件,如果我从组合框中选择索引1中的项目,则应该隐藏组控件 我已经使用代码将控件显示或隐藏为

import { Component, Inject, Injector, ReflectiveInjector } from '@angular/core';

class P {
}

const ps = [];

class C {
  constructor(@Inject(P) p) {
    ps.push(p);
  }
}

@Component({
  moduleId: module.id,
  selector: 'my-app',
  templateUrl: 'app.component.html',
  styleUrls: ['app.component.css']
})
export class AppComponent {
  name = 'Angular';

  constructor(injector: Injector) {
    const parent = ReflectiveInjector.resolveAndCreate([P], injector);
    const child = parent.resolveAndCreateChild([C]);
    const c1 = child.resolveAndInstantiate(C);
    const c2 = child.resolveAndInstantiate(C);
    console.log(c1 === c2); // false

    console.log(ps[0] === ps[1]); // true

  }
}

问题是即使在使用true参数调用上述方法后,仍然可以在屏幕上看到控件。如果我在(应该是)隐藏控件的顶部移动一些其他窗口,那么它实际上就消失了。所以这似乎是一个刷新问题。我的假设是InvalidateRect和UpdateWindow应该重新注册这个。但是没有发生。 尝试使用InvalidateRect(NULL)绘制整个屏幕,但仍无用。

你能否建议我如何隐藏控件?任何干净的方式吗?

注意:当控件(应该是)隐藏但仍然可以在屏幕上看到时,我将无法对这些控件执行任何操作(例如设置复选框或在文本框中键入内容)。 所以我认为控件被标记为隐藏但未绘制。

0 个答案:

没有答案