回 帖 发 新 帖 刷新版面

主题:本人可以解答VC++方面的问题,有问题请进来。。。

欢迎大家在这里提问。但如果没有及时回复,请见谅。。。
另:请将问题、现象表述清楚,否则恕无法解答。

声明:本人主要提供解决方案,具体作业和代码请自行处理,谢谢。


------2007年5月14日发:

对不起,大家,近来工作繁忙,对于大家的提问没有及时解答深感抱歉。呵呵。

另:本人长期承接VC++项目(至少2000RMB以上项目),有意发邮件(在个人资料里,邮件只接受外包项目),谢谢!

呵呵,祝大家工作学习顺利!

------2008年1月18日发:
呵呵~~~这帖子发了一周年了~~~很感谢大家的支持,点击率和回帖数都是这个版面几乎最高了,呵呵~~~~~不过本人一直都比较忙,没有回答大家的问题,请见谅~~呵呵~~~
欢迎大家继续支持~~~~

回复列表 (共581个回复)

151 楼

[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 楼


ListCtrl控件的的Check


请问:   
    
  当用鼠标点击不同Item的勾选,对应的处理消息是哪个啊?   

153 楼

[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 楼

[quote]
ListCtrl控件的的Check


请问:   
    
  当用鼠标点击不同Item的勾选,对应的处理消息是哪个啊?   
[/quote]
响应鼠标的点击消息,然后在响应函数里面获得点击的是几行几列,具体请查MSDN。

155 楼

[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 楼


仁兄,,,

         ADO,MFC
         ACCESS

   添加记录时,,为何在原来的基础上多加了几个字段
 
后存储,,,有几个字段是空的,没有添加任何值,包括BLOB

非记录绑定,,记录集添加.....

157 楼

[quote]
仁兄,,,

         ADO,MFC
         ACCESS

   添加记录时,,为何在原来的基础上多加了几个字段
 
后存储,,,有几个字段是空的,没有添加任何值,包括BLOB

非记录绑定,,记录集添加.....[/quote]
问题表述十分不清楚。。。

158 楼

楼主,我又来了。
这次想问问在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 楼

[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 楼

我把ws2_32.lib放那就行了??刚才直接放在主文件头了,他说找不到文件。DLLMain函数里面本来就有,为什么会出现warning??

我来回复

您尚未登录,请登录后再回复。点此登录或注册