读书人

release版本不能运行debug是好使的解

发布时间: 2012-04-14 17:14:21 作者: rapoo

release版本不能运行,debug是好使的
CMainWindow继承于 CFrameWnd。设置断点,单步运行,release版本的毛病出在 Create 函数,debug版没有问题

C/C++ code
BOOL CMainWindow::PreCreateWindow(CREATESTRUCT& cs){    CFrameWnd::PreCreateWindow(cs);    cs.dwExStyle = cs.dwExStyle & (!WS_EX_CLIENTEDGE);    cs.style = cs.style & (~ WS_SIZEBOX);    cs.style = cs.style & (~ WS_MAXIMIZEBOX);    return TRUE;}CMainWindow::CMainWindow(){    CRect r;    r.left = CW_USEDEFAULT;    r.top = CW_USEDEFAULT;    r.right = r.left+ 500 + ::GetSystemMetrics(SM_CYBORDER)*2;    r.bottom = r.top + 373 +         ::GetSystemMetrics(SM_CYBORDER)*2 + ::GetSystemMetrics(SM_CYMENU) +        ::GetSystemMetrics(SM_CYCAPTION);    Create(NULL, L"鹏来电脑", WS_OVERLAPPEDWINDOW   , r);}


[解决办法]
不应该在构造函数里调用Create吧
没有响应WM_CREATE消息?
[解决办法]
release版本的毛病出在 Create 函数?返回什么错误?
用GetLastError()瞧下
一般来说,Release和Debug版本的区别就在于编译器是否跟你初始化变量
不过我怀疑你是
L"鹏来电脑"
这个地方出了问题
检查下你工程的设置,release和debug都是UNICODE不???
具体的做法是,Project->setting里面,C/C++选项卡
preprocessor definitions(预编译定义)
看里面是否有_UNICODE(注意Debug和Release模式都要检查看下)。
最好是都把_UNICODE去掉,L"鹏来电脑"前的L也去掉,别搞UNICODE
[解决办法]
探讨
不应该在构造函数里调用Create吧
没有响应WM_CREATE消息?

读书人网 >VC/MFC

热点推荐