主题:本人可以解答VC++方面的问题,有问题请进来。。。
xyjs2006
[专家分:820] 发布于 2007-01-18 11:36:00
欢迎大家在这里提问。但如果没有及时回复,请见谅。。。
另:请将问题、现象表述清楚,否则恕无法解答。
声明:本人主要提供解决方案,具体作业和代码请自行处理,谢谢。
------2007年5月14日发:
对不起,大家,近来工作繁忙,对于大家的提问没有及时解答深感抱歉。呵呵。
另:本人长期承接VC++项目(至少2000RMB以上项目),有意发邮件(在个人资料里,邮件只接受外包项目),谢谢!
呵呵,祝大家工作学习顺利!
------2008年1月18日发:
呵呵~~~这帖子发了一周年了~~~很感谢大家的支持,点击率和回帖数都是这个版面几乎最高了,呵呵~~~~~不过本人一直都比较忙,没有回答大家的问题,请见谅~~呵呵~~~
欢迎大家继续支持~~~~
最后更新于:2008-01-18 20:44:00
回复列表 (共581个回复)
151 楼
xyjs2006 [专家分:820] 发布于 2007-02-09 20:51:00
[quote]通过菜单创建了一个非模态属性页:
首先创建自己的属性页单类
class CPropSheet : public CPropertySheet
在View类中定义成员变量
CPropSheet* pPropSheet;
在菜单事件中
pPropSheet=new CPropSheet("我的");
pPropSheet->Create(this);
pPropSheet->ShowWindow(SW_SHOWNORMAL);
可是每次点菜单都会生成新的属性页,于是修改为
if(FALSE==PropShowed)
{
pPropSheet=new CPropSheet("我的");
pPropSheet->Create(this);
pPropSheet->ShowWindow(SW_SHOWNORMAL);
PropShowed=TRUE;
}
else
{
pPropSheet->SetFocus();
}
PropShowed是定义的BOOL型新成员变量,用来监控已形成的属性页。
可是在属性页被销毁之后再次点菜单程序就崩溃了,因为此时PropShowed==TRUE
该怎么办?
我找不到销毁事件的消息相应函数,WM_DESTROY()那个不是
应该是在CPropSheet类中修改还是在View类中修改,我在View类中没有找到销毁子窗口的消息句柄,又不能直接创建该类对象的成员变量,只能创建该类对象的指针为成员变量(原因不详,反正不好使)[/quote]
在class CPropSheet类的WM_DESTROY消息中响应,你自己仔细查一下,有这个消息。
152 楼
北极星愿 [专家分:210] 发布于 2007-02-10 15:52:00
ListCtrl控件的的Check
请问:
当用鼠标点击不同Item的勾选,对应的处理消息是哪个啊?
153 楼
仿真天使 [专家分:360] 发布于 2007-02-10 19:59:00
[quote][quote]通过菜单创建了一个非模态属性页:
首先创建自己的属性页单类
class CPropSheet : public CPropertySheet
在View类中定义成员变量
CPropSheet* pPropSheet;
在菜单事件中
pPropSheet=new CPropSheet("我的");
pPropSheet->Create(this);
pPropSheet->ShowWindow(SW_SHOWNORMAL);
可是每次点菜单都会生成新的属性页,于是修改为
if(FALSE==PropShowed)
{
pPropSheet=new CPropSheet("我的");
pPropSheet->Create(this);
pPropSheet->ShowWindow(SW_SHOWNORMAL);
PropShowed=TRUE;
}
else
{
pPropSheet->SetFocus();
}
PropShowed是定义的BOOL型新成员变量,用来监控已形成的属性页。
可是在属性页被销毁之后再次点菜单程序就崩溃了,因为此时PropShowed==TRUE
该怎么办?
我找不到销毁事件的消息相应函数,WM_DESTROY()那个不是
应该是在CPropSheet类中修改还是在View类中修改,我在View类中没有找到销毁子窗口的消息句柄,又不能直接创建该类对象的成员变量,只能创建该类对象的指针为成员变量(原因不详,反正不好使)[/quote]
在class CPropSheet类的WM_DESTROY消息中响应,你自己仔细查一下,有这个消息。[/quote]
我应该在属性表单被销毁的时候把View类的成员变量PropShowed修改成FALSE,这个过程因该如何实现?如何能在CPropSheet类中操作View类的成员变量?
我在CPropSheet类的WM_DESTROY中使用
CPopView::PropShowed=FALSE;
结果提示错误
E:\VC\Pop\PropSheet.cpp(60) : error C2597: illegal reference to data member 'CPopView::PropShowed' in a static member function
PropShowed不是静态变量。而且我把它修改成静态变量也不好使
154 楼
xyjs2006 [专家分:820] 发布于 2007-02-10 21:45:00
[quote]
ListCtrl控件的的Check
请问:
当用鼠标点击不同Item的勾选,对应的处理消息是哪个啊?
[/quote]
响应鼠标的点击消息,然后在响应函数里面获得点击的是几行几列,具体请查MSDN。
155 楼
xyjs2006 [专家分:820] 发布于 2007-02-10 21:52:00
[quote][quote][quote]通过菜单创建了一个非模态属性页:
首先创建自己的属性页单类
class CPropSheet : public CPropertySheet
在View类中定义成员变量
CPropSheet* pPropSheet;
在菜单事件中
pPropSheet=new CPropSheet("我的");
pPropSheet->Create(this);
pPropSheet->ShowWindow(SW_SHOWNORMAL);
可是每次点菜单都会生成新的属性页,于是修改为
if(FALSE==PropShowed)
{
pPropSheet=new CPropSheet("我的");
pPropSheet->Create(this);
pPropSheet->ShowWindow(SW_SHOWNORMAL);
PropShowed=TRUE;
}
else
{
pPropSheet->SetFocus();
}
PropShowed是定义的BOOL型新成员变量,用来监控已形成的属性页。
可是在属性页被销毁之后再次点菜单程序就崩溃了,因为此时PropShowed==TRUE
该怎么办?
我找不到销毁事件的消息相应函数,WM_DESTROY()那个不是
应该是在CPropSheet类中修改还是在View类中修改,我在View类中没有找到销毁子窗口的消息句柄,又不能直接创建该类对象的成员变量,只能创建该类对象的指针为成员变量(原因不详,反正不好使)[/quote]
在class CPropSheet类的WM_DESTROY消息中响应,你自己仔细查一下,有这个消息。[/quote]
我应该在属性表单被销毁的时候把View类的成员变量PropShowed修改成FALSE,这个过程因该如何实现?如何能在CPropSheet类中操作View类的成员变量?
我在CPropSheet类的WM_DESTROY中使用
CPopView::PropShowed=FALSE;
结果提示错误
E:\VC\Pop\PropSheet.cpp(60) : error C2597: illegal reference to data member 'CPopView::PropShowed' in a static member function
PropShowed不是静态变量。而且我把它修改成静态变量也不好使[/quote]
方法1:
声明CPopView::PropShowed为静态变量,需要在类声明外再写一遍 BOOL CPopView::PropShowed=NULL;
方法2:
在CPropSheet类中声明CPopView对象指针,在new CPropSheet对象后,设置指针:CPropSheet::(CPopView指针)=this;
方法3:
通过CDoument::GetNextView方法遍历View,获得CPopView对象指针(转换后是CView指正,需要强制转换为CPopView指针)。具体请查MSDN。
156 楼
erliqq [专家分:310] 发布于 2007-02-12 05:08:00
仁兄,,,
ADO,MFC
ACCESS
添加记录时,,为何在原来的基础上多加了几个字段
后存储,,,有几个字段是空的,没有添加任何值,包括BLOB
非记录绑定,,记录集添加.....
157 楼
xyjs2006 [专家分:820] 发布于 2007-02-12 10:07:00
[quote]
仁兄,,,
ADO,MFC
ACCESS
添加记录时,,为何在原来的基础上多加了几个字段
后存储,,,有几个字段是空的,没有添加任何值,包括BLOB
非记录绑定,,记录集添加.....[/quote]
问题表述十分不清楚。。。
158 楼
kabar [专家分:20] 发布于 2007-02-13 09:30:00
楼主,我又来了。
这次想问问在dll中使用socket的问题。我在dll中加进了socket连接代码,编译的时候没出错,运行的时候就报错,都是类似下面的错误:
main.obj : error LNK2019: 无法解析的外部符号 _WSAStartup@8 ,该符号在函数 _WlxInitialize@20 中被引用
main.obj : error LNK2019: 无法解析的外部符号 _recv@16 ,该符号在函数 _WlxLoggedOutSAS@32 中被引用
另外,在出错信息的开头有如下信息:
------ 已启动生成: 项目: NoReboot, 配置: Release Win32 ------
正在编译...
main.c
正在链接...
.\out.def(2) : warning LNK4017: 对于目标平台不支持 DESCRIPTION 语句;已将其忽略
正在创建库 .\Release/NoReboot.lib 和对象 .\Release/NoReboot.exp
NoReboot.exp : warning LNK4070: .EXP 中的 /OUT: GINA.dll 指令与输出文件名“.\Release/NoReboot.dll”不同;忽略指令
难道是我调试的方法不对??dll该如何调试??
159 楼
xyjs2006 [专家分:820] 发布于 2007-02-13 13:50:00
[quote]楼主,我又来了。
这次想问问在dll中使用socket的问题。我在dll中加进了socket连接代码,编译的时候没出错,运行的时候就报错,都是类似下面的错误:
main.obj : error LNK2019: 无法解析的外部符号 _WSAStartup@8 ,该符号在函数 _WlxInitialize@20 中被引用
main.obj : error LNK2019: 无法解析的外部符号 _recv@16 ,该符号在函数 _WlxLoggedOutSAS@32 中被引用
另外,在出错信息的开头有如下信息:
------ 已启动生成: 项目: NoReboot, 配置: Release Win32 ------
正在编译...
main.c
正在链接...
.\out.def(2) : warning LNK4017: 对于目标平台不支持 DESCRIPTION 语句;已将其忽略
正在创建库 .\Release/NoReboot.lib 和对象 .\Release/NoReboot.exp
NoReboot.exp : warning LNK4070: .EXP 中的 /OUT: GINA.dll 指令与输出文件名“.\Release/NoReboot.dll”不同;忽略指令
难道是我调试的方法不对??dll该如何调试??[/quote]
error LNK2019是因为没有包含SOCKET库文件ws2_32.lib。
warning是因为在DLL中需要有DLLMAIN函数,而不是一般的MIAN函数。DLL相关内容请自行查阅。
160 楼
kabar [专家分:20] 发布于 2007-02-13 14:06:00
我把ws2_32.lib放那就行了??刚才直接放在主文件头了,他说找不到文件。DLLMain函数里面本来就有,为什么会出现warning??
我来回复