问题1:在测试选项卡控件时,原先在子对话框上定义了一个文本框,并关联了变量,然后再把这个文本框删除,执行程序,遇到以下问题,
解决办法:对话框显示,弹出中止,重试,忽略,问题所在就是控件的问题。你可以在函数DoDataExchange,这个函数自动生成的,是变量和控件关联的都在这个函数里边。在各个CPP文件下,搜索这个函数,看函数内是否包含了文本框所关联的变量,若有,则删除,问题得到解决。
问题2:执行程序后,对话框的大小不可调
解决办法:改下对话框的属性就行了,Border改成Resizing,Minimize Box跟Maxmize Box选上就行了
问题3:已经定义的ID,在调用时仍然显示未定义
解决办法:添加头文件 #include "Resource.h"
问题4:位图不能自适应picture control大小
解决办法:参考https://www.2cto.com/kf/201707/653256.html 感谢作者 作者描述如下
void
CTestDlg::AddPitcure()
{
CBitmap bitmap;
//加载指定位图资源 Bmp图片ID
bitmap.LoadBitmap(IDB_BITMAP_MAIN);
//获取对话框上的句柄 图片控件ID
CStatic *p=(CStatic *)GetDlgItem(IDC_MAINMode);
//设置静态控件窗口风格为位图居中显示
p->ModifyStyle(
0xf
,SS_BITMAP|SS_CENTERIMAGE);
//将图片设置到Picture控件上
p->SetBitmap(bitmap);
BITMAP bmpInfo;
bitmap.GetBitmap(&bmpInfo);
CDC dcMemory;
CDC* pDC=GetDlgItem(IDC_MAINMode)->GetDC();
dcMemory.CreateCompatibleDC(pDC);
CBitmap* pOldBitmap = dcMemory.SelectObject(&bitmap);
CRect rect;
m_Picture.GetClientRect(&rect);
int
nX = rect.left + (rect.Width() - bmpInfo.bmWidth) /
2
;
int
nY = rect.top + (rect.Height() - bmpInfo.bmHeight) /
2
;
//pDC->BitBlt(0, 0, bmpInfo.bmWidth, bmpInfo.bmHeight, &dcMemory, 0, 0, SRCCOPY);
pDC->SetStretchBltMode(COLORONCOLOR);
pDC->StretchBlt(
0
,
0
,rect.Width(),rect.Height(),&dcMemory,
0
,
0
, bmpInfo.bmWidth, bmpInfo.bmHeight,SRCCOPY);
dcMemory.SelectObject(pOldBitmap);
ReleaseDC(pDC);
}
AddPitcure()放在OnPaint消息函数里面,且前面需加UpdateWindow();,不然添加的位图会显示不全。
但是本人将代码加入OnPaint消息函数消息函数后,与picture control关联的变量m_oriPicture不能识别,没有找到原因,请大家指教。
(原因找到,本人将picture control放在了子对话框上,而OnPaint消息函数是在父对话框的相关cpp文件里,因此在该文件中调用
子对话框中的控件的关联变量时,要利用子对话框的类来调用,即用m_para1.m_oriPicture)
所以本人将代码放在了某个按钮的响应函数中,并按照自己所定义的标识符做了修改,问题得以解决,位图已经可以自适应控件大小了。
在解决这个问题的过程中,点击按钮,出现过另外一个错误
通过加入断点调试发现,bitmap.GetBitmap(&bmpInfo); 这句代码在该按钮响应函数中已经出现过,因此报错,删除后,问题解决。
问题5:在第一个按钮的响应函数中定义的IPlImage*变量在另一个按钮中不能使用(两个按钮在同一个对话框上)
解决办法:给这两个按钮所在的对话框的类添加IPlImage*变量,这样就不用在按钮的响应函数里再定义了,而且都能使用。
问题六:本人在子对话框下添加了一个组合框控件,在按照http://www.jizhuomi.com/software/189.html所述进行初始话时,
运行时出现错误,该帖子中是在主对话框下添加的组合框控件,并在主对话框下的OnInitDialog函数下进行的初始化。至于为什么出错
,至今没有找到原因,请多多指教。
解决办法:在子对话框添加OnInitDialog函数,OnInitDialog 在vs2010中实现为虚函数 所以在 项目 -> 类向导
-> 选中子对话框对应的类->虚函数-> 找到OnInitDialog 添加即可,并在该函数中添加组合框控件初始化代码。
问题七:在子对话框上,无法添加按钮响应函数
解决办法:应该是resource.h里面ID重复了,修改按钮的ID,问题解决。
问题八:控件的ID无法识别,include了resource.h后依然没有
解决办法:include了resource.h后,然后双击打开resource.h后关闭,即可识别