MFC创建线程函数放到OnInitDialog初始化代码中报错
时间: 2024-02-28 18:57:52 浏览: 89
在 MFC 的 OnInitDialog 函数中创建线程是不推荐的,因为该函数是用于创建对话框的,应该尽量避免在其中执行耗时操作。如果您必须在该函数中创建线程,请确保您在调用 CreateThread 函数之前先调用 AfxBeginThread 函数,以确保线程的正确启动和管理。例如:
```
BOOL CMyDialog::OnInitDialog()
{
CDialogEx::OnInitDialog();
// 创建线程
AfxBeginThread(MyThreadProc, this);
return TRUE;
}
```
其中 MyThreadProc 是您自己定义的线程函数,this 指针是传递给线程函数的参数。请注意,这种方法仍然可能会导致一些问题,因为线程可能在对话框销毁之前仍在运行。因此,最好在对话框销毁之前关闭线程,以避免内存泄漏和其他问题。
相关问题
mfc的picture control 在OnInitDialog()函数中调用无法但无法显示图片的解决办
这个问题可能是由于以下原因导致的:
1. 图片文件路径错误:请确认你的代码中使用的图片文件路径是正确的,可以使用绝对路径或者相对路径。
2. 控件大小设置错误:请确认控件的大小能够容纳你要显示的图片,如果控件太小,图片可能会被裁剪或者无法显示。
3. 控件属性设置错误:请确认控件的属性设置正确,如Auto size属性应该设置为True,Background color属性应该设置为Transparent。
4. 图片格式错误:请确认你要显示的图片格式是支持的格式,如BMP、JPEG、PNG等。
5. 控件没有刷新:如果你在OnInitDialog函数中设置了图片控件的图片,但是图片没有显示出来,可能是因为控件没有刷新。你可以尝试在OnInitDialog函数最后调用一次UpdateData函数,或者在OnInitDialog函数中添加一个InvalidateRect函数来刷新控件。
vs2008mfc怎么添加oninitdialog
在 VS2008 MFC 中,您可以通过以下步骤添加 OnInitDialog 函数:
1. 打开您的 MFC 对话框类头文件 (.h)。
2. 在类声明中添加以下函数声明:
```
virtual BOOL OnInitDialog();
```
3. 打开您的 MFC 对话框类源文件 (.cpp)。
4. 在类实现中添加以下函数实现:
```
BOOL YourDialogClass::OnInitDialog()
{
CDialog::OnInitDialog();
// Add your initialization code here
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
```
5. 将 "YourDialogClass" 替换为您的对话框类名。
6. 在 OnInitDialog 函数中添加您的自定义初始化代码。
这样就可以在您的 MFC 对话框类中使用 OnInitDialog 函数了。
阅读全文