代码如下:
CLineWidthDlg *pDlg = new CLineWidthDlg;
pDlg ->Create(IDD_LINEWIDTH, this);
pDlg ->ShowWindow(SW_SHOW);
我想问一下,我哪里写错了吗?或者说是少写了什么东西,为什么运行的时候只出现一个主框,而里边的控件不显示出来呢?
18 个解决方案
#1
控件的visible属性设了吗?
#2
设置了啊,都设置了。
#3
用Domodal试下
#4
你确定控件是在那个对话框上面吗
#5
是不是你的主线程很忙?
非模态对话框还没有窗口重绘,子控件是显示不出来的。
如果主线程很忙的话,可以创建UI线程来显示这个非模态对话框.
非模态对话框还没有窗口重绘,子控件是显示不出来的。
如果主线程很忙的话,可以创建UI线程来显示这个非模态对话框.
#6
Domodal应该可以显示出来,lz你试试加一句pDlg ->UpdateWindow();在pDlg ->ShowWindow(SW_SHOW);
这句话之前
这句话之前
#7
说错了,应该放在ShowWindow后面。。。
#8
我都截图出来了,怎么还不确定?
#9
DOModal是用来显示模态对话框的,非模态对话框要create()。
#10
这个我也试过了,还是不行。
#11
你的下面3句代码没有错误,已经帮你测试过。
CLineWidthDlg *pDlg = new CLineWidthDlg;
pDlg ->Create(IDD_LINEWIDTH, this);
pDlg ->ShowWindow(SW_SHOW);
问题出在别的地方。
CLineWidthDlg *pDlg = new CLineWidthDlg;
pDlg ->Create(IDD_LINEWIDTH, this);
pDlg ->ShowWindow(SW_SHOW);
问题出在别的地方。
#12
OnInitDialog()贴出来看看有什么问题.还有DDX...宏部分
#13
问题我已经解决了,谢谢各位热心高手的热心解答。
#14
解决了一还是说一下原因与解决办法嘛, 这样大家也好共同进步啥.
#15
我写了响应“确定”按钮的消息响应函数就好了,像这样:
void CLineWidthDlg::OnBnClickedOk()
{
CString strLine;
if(this ->m_hWnd)
{
//代码
}
CDialogEx::OnOK();
}
我也不知道为什么。。。
void CLineWidthDlg::OnBnClickedOk()
{
CString strLine;
if(this ->m_hWnd)
{
//代码
}
CDialogEx::OnOK();
}
我也不知道为什么。。。
#16
你原来创建非模态对话框窗口的代码是放在什么位置?
#17
我也是这种情况啊。。。我是写在确定按钮的消息响应里的。还是不显示啊
void CMy66Dlg::OnQueding()
{
CAA *pDlg = new CAA; // 最好将pDlg 定义为成员变量,退出时好析构
pDlg->Create(IDD_DIALOG1, this); // IDD_XX为CStart的ID号
pDlg->ShowWindow(SW_SHOW); // 显示窗口
pDlg ->UpdateWindow();
CBB *pSlg = new CBB;
pSlg->Create(IDD_DIALOG2, this); // IDD_XX为CStart的ID号
pSlg->ShowWindow(SW_SHOW); // 显示窗口
Sleep(3000);
pDlg->DestroyWindow();
delete (pDlg);
}
void CMy66Dlg::OnQueding()
{
CAA *pDlg = new CAA; // 最好将pDlg 定义为成员变量,退出时好析构
pDlg->Create(IDD_DIALOG1, this); // IDD_XX为CStart的ID号
pDlg->ShowWindow(SW_SHOW); // 显示窗口
pDlg ->UpdateWindow();
CBB *pSlg = new CBB;
pSlg->Create(IDD_DIALOG2, this); // IDD_XX为CStart的ID号
pSlg->ShowWindow(SW_SHOW); // 显示窗口
Sleep(3000);
pDlg->DestroyWindow();
delete (pDlg);
}
#18
我也遇到相同问题,原因是:
非模态对话框和主窗口共用一个消息循环,所以在ShowWindow以后您又用了Sleep()操作,导致当前有些消息处理被阻塞,然后您用调用了DestroyWindow来销毁该非模态对话框窗口。
方法,在showwindow后面写个UpdateWindow();
非模态对话框和主窗口共用一个消息循环,所以在ShowWindow以后您又用了Sleep()操作,导致当前有些消息处理被阻塞,然后您用调用了DestroyWindow来销毁该非模态对话框窗口。
方法,在showwindow后面写个UpdateWindow();
#1
控件的visible属性设了吗?
#2
设置了啊,都设置了。
#3
用Domodal试下
#4
你确定控件是在那个对话框上面吗
#5
是不是你的主线程很忙?
非模态对话框还没有窗口重绘,子控件是显示不出来的。
如果主线程很忙的话,可以创建UI线程来显示这个非模态对话框.
非模态对话框还没有窗口重绘,子控件是显示不出来的。
如果主线程很忙的话,可以创建UI线程来显示这个非模态对话框.
#6
Domodal应该可以显示出来,lz你试试加一句pDlg ->UpdateWindow();在pDlg ->ShowWindow(SW_SHOW);
这句话之前
这句话之前
#7
说错了,应该放在ShowWindow后面。。。
#8
我都截图出来了,怎么还不确定?
#9
DOModal是用来显示模态对话框的,非模态对话框要create()。
#10
这个我也试过了,还是不行。
#11
你的下面3句代码没有错误,已经帮你测试过。
CLineWidthDlg *pDlg = new CLineWidthDlg;
pDlg ->Create(IDD_LINEWIDTH, this);
pDlg ->ShowWindow(SW_SHOW);
问题出在别的地方。
CLineWidthDlg *pDlg = new CLineWidthDlg;
pDlg ->Create(IDD_LINEWIDTH, this);
pDlg ->ShowWindow(SW_SHOW);
问题出在别的地方。
#12
OnInitDialog()贴出来看看有什么问题.还有DDX...宏部分
#13
问题我已经解决了,谢谢各位热心高手的热心解答。
#14
解决了一还是说一下原因与解决办法嘛, 这样大家也好共同进步啥.
#15
我写了响应“确定”按钮的消息响应函数就好了,像这样:
void CLineWidthDlg::OnBnClickedOk()
{
CString strLine;
if(this ->m_hWnd)
{
//代码
}
CDialogEx::OnOK();
}
我也不知道为什么。。。
void CLineWidthDlg::OnBnClickedOk()
{
CString strLine;
if(this ->m_hWnd)
{
//代码
}
CDialogEx::OnOK();
}
我也不知道为什么。。。
#16
你原来创建非模态对话框窗口的代码是放在什么位置?
#17
我也是这种情况啊。。。我是写在确定按钮的消息响应里的。还是不显示啊
void CMy66Dlg::OnQueding()
{
CAA *pDlg = new CAA; // 最好将pDlg 定义为成员变量,退出时好析构
pDlg->Create(IDD_DIALOG1, this); // IDD_XX为CStart的ID号
pDlg->ShowWindow(SW_SHOW); // 显示窗口
pDlg ->UpdateWindow();
CBB *pSlg = new CBB;
pSlg->Create(IDD_DIALOG2, this); // IDD_XX为CStart的ID号
pSlg->ShowWindow(SW_SHOW); // 显示窗口
Sleep(3000);
pDlg->DestroyWindow();
delete (pDlg);
}
void CMy66Dlg::OnQueding()
{
CAA *pDlg = new CAA; // 最好将pDlg 定义为成员变量,退出时好析构
pDlg->Create(IDD_DIALOG1, this); // IDD_XX为CStart的ID号
pDlg->ShowWindow(SW_SHOW); // 显示窗口
pDlg ->UpdateWindow();
CBB *pSlg = new CBB;
pSlg->Create(IDD_DIALOG2, this); // IDD_XX为CStart的ID号
pSlg->ShowWindow(SW_SHOW); // 显示窗口
Sleep(3000);
pDlg->DestroyWindow();
delete (pDlg);
}
#18
我也遇到相同问题,原因是:
非模态对话框和主窗口共用一个消息循环,所以在ShowWindow以后您又用了Sleep()操作,导致当前有些消息处理被阻塞,然后您用调用了DestroyWindow来销毁该非模态对话框窗口。
方法,在showwindow后面写个UpdateWindow();
非模态对话框和主窗口共用一个消息循环,所以在ShowWindow以后您又用了Sleep()操作,导致当前有些消息处理被阻塞,然后您用调用了DestroyWindow来销毁该非模态对话框窗口。
方法,在showwindow后面写个UpdateWindow();