VC mfc 基于对话框的工程。
生成 release 版本后,本机和有VC的机器上正常,但在非VC环境下,点了就没反应,也没提示缺什么DLL之类的。
我加了几个提示框来调试,在 主对话框 的构造函数开始处加了
CAVS1Dlg::CAVS1Dlg(CWnd* pParent /*=NULL*/)
: CDialog(CAVS1Dlg::IDD, pParent)
{
MessageBox("dlg in");
在截止处加了 MessageBox("dlg out");
}在Init处加了BOOL CAVS1Dlg::OnInitDialog()
{
MessageBox("initdlg in");
CDialog::OnInitDialog();结果 ‘dlg in’ 和 ‘dlg out’ 都显示了,但 ‘initdlg in’就没显示。我用了 静态链接DLL 编译的,而且是 /MT 模式。我的主窗口上有 两个 WinSock 控件,程序里有个自己定义的 ADO 连数据库的类 CADOConn,#import "c:\Program Files\Common Files\System\ado\msado15.dll" no_namespace rename("EOF","adoEOF") rename ("BOF","adoBOF")#include <comutil.h>#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000class CADOConn
{
public:
void ExitConnect();
BOOL ExecuteSQL(_bstr_t strConnect,_bstr_t bstrSQL);
_RecordsetPtr& GetRecordSet(_bstr_t strConnect,_bstr_t bstrSQL);
void OnInitADOConn(_bstr_t strConnect);
_RecordsetPtr m_pRecordset;
_ConnectionPtr m_pConnection;
CADOConn();
virtual ~CADOConn();};连的是 ORACLE。另:在有VC的机器上 第一次 运行软件时,窗口不是在屏幕中间,而是在左上角,第二次之后就在中间了。
还有,我用 VC6.0 和 VC 2003 都试过了,都不行。有没有有经验的知道怎么回事啊?
生成 release 版本后,本机和有VC的机器上正常,但在非VC环境下,点了就没反应,也没提示缺什么DLL之类的。
我加了几个提示框来调试,在 主对话框 的构造函数开始处加了
CAVS1Dlg::CAVS1Dlg(CWnd* pParent /*=NULL*/)
: CDialog(CAVS1Dlg::IDD, pParent)
{
MessageBox("dlg in");
在截止处加了 MessageBox("dlg out");
}在Init处加了BOOL CAVS1Dlg::OnInitDialog()
{
MessageBox("initdlg in");
CDialog::OnInitDialog();结果 ‘dlg in’ 和 ‘dlg out’ 都显示了,但 ‘initdlg in’就没显示。我用了 静态链接DLL 编译的,而且是 /MT 模式。我的主窗口上有 两个 WinSock 控件,程序里有个自己定义的 ADO 连数据库的类 CADOConn,#import "c:\Program Files\Common Files\System\ado\msado15.dll" no_namespace rename("EOF","adoEOF") rename ("BOF","adoBOF")#include <comutil.h>#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000class CADOConn
{
public:
void ExitConnect();
BOOL ExecuteSQL(_bstr_t strConnect,_bstr_t bstrSQL);
_RecordsetPtr& GetRecordSet(_bstr_t strConnect,_bstr_t bstrSQL);
void OnInitADOConn(_bstr_t strConnect);
_RecordsetPtr m_pRecordset;
_ConnectionPtr m_pConnection;
CADOConn();
virtual ~CADOConn();};连的是 ORACLE。另:在有VC的机器上 第一次 运行软件时,窗口不是在屏幕中间,而是在左上角,第二次之后就在中间了。
还有,我用 VC6.0 和 VC 2003 都试过了,都不行。有没有有经验的知道怎么回事啊?
解决方案 »
- 请教一个关于成员变量的一个小问题
- 请问一个关于String_Table的问题
- 提供《VC++实效编程百例》和《VC++技术内幕》下载地址: 刚才下载有问题。不好意思!!
- 不大不小的问题?
- 菜鸟焦急问:怎么用CSocket类接收服务器端主动发来的数据?在线等
- 200 分求周长发的处理 bmp 图象的算法程序 (liweiliwei2ooo )
- 高分:单文档3视图切换+数据库编程
- NTGraph.ocx 控件问题,按它的属性取横坐标做时间,但是为什么设置初值有问题
- 请教:怎样在VC6下编译通过关于outlook\Exchange开发的例子程序
- 请教:如何利用MS提供的动态连接库建立自己的CAB(cabinet)文件。
- VC6写的ocx控件,在html中调用,接收不到事件,求助!
- 求一个垂直滚动条的初级例程
你试着加上try看看.
BOOL CAVS1Dlg::OnInitDialog()
没反应????
看看消息映射有什么冲突的吗?
我建了一个新工程,选了 sock ,编译出来的能在别人的机器上运行,
但我在界面上 加个WINSOCK 控件,用Class WiZard定义了一个 CMSWinsockControl 变量,然后再编译的程序,在别人的机器上就没反应了。
在构造函数和OnInitDialog中有没有干什么别的事情?至于“在有VC的机器上 第一次 运行软件时,窗口不是在屏幕中间,而是在左上角,第二次之后就在中间了。”,这个比较好解决,在OnInitDialog函数中按如下即可,估计是分辨率问题:RECT rect;
//获得屏幕尺寸
scrWidth=GetSystemMetrics(SM_CXSCREEN);
scrHeight=GetSystemMetrics(SM_CYSCREEN);
//获取窗体尺寸
GetWindowRect(this->m_hWnd,&rect);
rect.left=(scrWidth-rect.right)/2;
rect.top=(scrHeight-rect.bottom)/2;
//设置窗体位置
SetWindowPos(this->m_hWnd,this->m_hWnd_TOP,rect.left,rect.top,rect.right,rect.bottom,SWP_SHOWWINDOW);
: CDialog(CAVS1Dlg::IDD, pParent)
{
MessageBox("dlg in");
//{{AFX_DATA_INIT(CAVS1Dlg)
m_str_dfjy = _T("");
m_str_sddy = _T("");
m_str_ydlb = _T("");
m_str_yddz = _T("");
m_str_yhh = _T("");
m_str_yhxm = _T("");
m_str_zjh = _T("");
//}}AFX_DATA_INIT
// Note that LoadIcon does not require a subsequent DestroyIcon in Win32
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME); TCHAR szStylesPath[_MAX_PATH]; VERIFY(::GetModuleFileName(
AfxGetApp()->m_hInstance, szStylesPath, _MAX_PATH));
m_strStylesPath = szStylesPath;
int nIndex = m_strStylesPath.ReverseFind(_T('\\'));
if (nIndex > 0) {
m_strStylesPath = m_strStylesPath.Left(nIndex);
}
else {
m_strStylesPath.Empty();
}
m_strStylesPath += _T("\\Styles\\");
//XTPSkinManager()->AddColorFilter(new CXTPSkinManagerColorFilterColorize(50, 100, 1)); XTPSkinManager()->SetApplyOptions(XTPSkinManager()->GetApplyOptions() | xtpSkinApplyMetrics);
XTPSkinManager()->LoadSkin(m_strStylesPath + _T("Office2007.cjstyles"), _T("NormalBlue.ini")); MessageBox("dlg out");
}所以‘dlg in’是普通风格,‘dlg out’是Office2007风格。InitDialog应该没问题吧,因为他根本就没进去。
就像我3楼说的,我新建了一个干净的工程,加了WINSOCK 控件和 CMSWinsockControl 变量之后,就不能在非VC的机器上打开了,何解啊?