⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 subject_48505.htm

📁 一些关于vc的问答
💻 HTM
📖 第 1 页 / 共 2 页
字号:
<p>
序号:48505 发表者:mesen 发表日期:2003-08-01 01:16:51
<br>主题:大哥大嫂们呢我都快哭了救我呀!!
<br>内容:我想在实现的东西很简单,但却不能实现,困了我几天走不出去:<BR>编程工具VC60,用多文件档视图结构做框架;<BR>数据文件在CDOC中,以结构数组的方式存在(ARRAY);<BR>在CVIEW中绘图,绘图时需要调用CDOC中的结构数组ARRAY。<BR>按理说很简单呀,直接用pDoc来取数组成员或CDOC的成员函数就可以了。<BR>可是项目需要能够手动改变View中OnDraw()函数所绘的图的数据的处理方式(即对数据源能进行不同的加工以返回不同的值以供绘图),这么一来就需要用到函数指针,可是数据又存在于CDOC的“对象”中,这么一来,函数指针就没法指向CDOC中的取值函数了。为了能够使CDOC的成员函数能被CVIEW中的函数指针所指上,就想着把CDOC中的取值函数设成static了,可是如果把它们设成static,就得把那几个数组也设成static才行,这样一来,就需要给这几个数组进行初始化(static好像必须初始化才能通过编译),可他们是数组呀,我怎么才能在类外给数组进行初始化呢?。如果仅是一个static&nbsp;&nbsp;int a ,那直接在类外进行 int&nbsp;&nbsp;a = 100;就好了,可给结构数组进行初始化就得调用专门对其进行初始化的函数,可在类外还没生成对象之前,我怎么调用这做为CDOC成员的函数呀!一调用就出错,初始化吧通不过!<BR>我就想着不行把这几个GetArray()函数也全局了算了,可再一想如果将这函数也static了,那么它调用的数据也都得给static了,要不然根本没法直接调用,……,我想到这里已经崩溃了没法再往下想了,难道没有简单点的可行方案了。<BR>我不过就是想实现:张三(CVIEW)要绘图,需要半成品支持(函数的返回值),而可以加工成半成品的基础材料就几个ARRAY。可以有很多方法把ARRAY中的数据加工成不同的半成品。这样就有一些加工方案,即函数。张三现在只是想增加一个选择“加工方案“的权力而已,可这该死的规则,就差那么一点可却越绕越远。如果函数指针能直接指各对象的成员……,我这两天做梦都在这么想。我快疯了,哥们们快来救我呀,我实在顶不住了。我会为你祝福的!!
<br><a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p>
<hr size=1>
<blockquote><p>
回复者:Hutuph 回复日期:2003-08-01 01:26:29
<br>内容:能把你的源代码发给我吗?<BR>codefish@citiz.net
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:米罗 回复日期:2003-08-01 08:58:55
<br>内容:呵呵,不哭不哭。大家一起努力解决。
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:米罗 回复日期:2003-08-01 09:06:36
<br>内容:啊,工作到快两点了,好心苦好用功呀!向你学习!!!向你致敬!!!
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:mesen 回复日期:2003-08-01 11:15:35
<br>内容:class CTysDoc : public CDocument<BR>{<BR>public:<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;CString&nbsp;&nbsp;sPath_TysBlockAllLabel;&nbsp;&nbsp; //板块——总板块<BR>&nbsp;&nbsp;&nbsp;&nbsp;CString&nbsp;&nbsp;sPath_Tys;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//文件总路径<BR>&nbsp;&nbsp;&nbsp;&nbsp;CString&nbsp;&nbsp;sPath_TysData;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//日线数据路径——给出代码名即可调用<BR>&nbsp;&nbsp;&nbsp;&nbsp;CString&nbsp;&nbsp;sPath_TysListData;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//取列表数据路径——可直接调用<BR>&nbsp;&nbsp;&nbsp;&nbsp;CString&nbsp;&nbsp;sPath_TysBlockLabel;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//取板块代码路径——给出板块名即可调用<BR><BR>protected://需要的基础数据全在下面这两个数组中保存着<BR>&nbsp;&nbsp;&nbsp;&nbsp;CArray&lt;TA_LOCALBODY,TA_LOCALBODY&gt;&nbsp;&nbsp; ExponentArray;&nbsp;&nbsp;&nbsp;&nbsp;//原始指数数组<BR>&nbsp;&nbsp;&nbsp;&nbsp;CArray&lt;TA_LOCALBODY,TA_LOCALBODY&gt;&nbsp;&nbsp; StockDataArray;&nbsp;&nbsp; //按股指时间顺序填充的个股数组<BR><BR><BR>public:&nbsp;&nbsp;//用下面两个函数填充数组<BR>&nbsp;&nbsp;&nbsp;&nbsp;BOOL&nbsp;&nbsp; GetingExponentArray(CString sLabel);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //填充指数的数组<BR>&nbsp;&nbsp;&nbsp;&nbsp;BOOL&nbsp;&nbsp; GetingStockDataArray(CString&nbsp;&nbsp;str);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//填充个股数组函数<BR><BR><BR>public:&nbsp;&nbsp;//下面就是那些供Cview等其它类对象调用数组成员的函数。供指针调用的<BR>&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;&nbsp;StockArraySize();<BR>&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;&nbsp;ExponentArraySize();<BR>&nbsp;&nbsp;&nbsp;&nbsp;CString&nbsp;&nbsp;Name(CArray&lt;TA_LOCALBODY,TA_LOCALBODY&gt; &amp;mArray);<BR>&nbsp;&nbsp;&nbsp;&nbsp;CString&nbsp;&nbsp;Label(CArray&lt;TA_LOCALBODY,TA_LOCALBODY&gt; &amp;mArray);<BR>&nbsp;&nbsp;&nbsp;&nbsp;DWORD&nbsp;&nbsp;Open(int&nbsp;&nbsp;mnIndex);<BR>&nbsp;&nbsp;&nbsp;&nbsp;DWORD&nbsp;&nbsp;Close(int&nbsp;&nbsp;mnIndex);<BR>&nbsp;&nbsp;&nbsp;&nbsp;DWORD&nbsp;&nbsp;High(int&nbsp;&nbsp;mnIndex);<BR>&nbsp;&nbsp;&nbsp;&nbsp;DWORD&nbsp;&nbsp;Low(int&nbsp;&nbsp;mnIndex);<BR>&nbsp;&nbsp;&nbsp;&nbsp;DWORD&nbsp;&nbsp;Volume(int&nbsp;&nbsp;mnIndex);<BR>&nbsp;&nbsp;&nbsp;&nbsp;DWORD&nbsp;&nbsp;Amount(int&nbsp;&nbsp;mnIndex);<BR>&nbsp;&nbsp;&nbsp;&nbsp;DWORD&nbsp;&nbsp;Date(int mnIndex);<BR>&nbsp;&nbsp;&nbsp;&nbsp;DWORD&nbsp;&nbsp;MaClose(int mnIndex, int mnCombins);<BR>&nbsp;&nbsp;&nbsp;&nbsp;DWORD&nbsp;&nbsp;Average(int mnIndex, int mnBackDays);<BR>&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;&nbsp;&nbsp;&nbsp;SingleContra(int mnIndex);&nbsp;&nbsp;<BR>public://取得股指结构数组的指定项数据<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;DWORD&nbsp;&nbsp;ExpOpen(int&nbsp;&nbsp;mnIndex, int nDivisor);<BR>&nbsp;&nbsp;&nbsp;&nbsp;DWORD&nbsp;&nbsp;ExpClose(int&nbsp;&nbsp;mnIndex, int nDivisor);<BR>&nbsp;&nbsp;&nbsp;&nbsp;DWORD&nbsp;&nbsp;ExpHigh(int&nbsp;&nbsp;mnIndex, int nDivisor);<BR>&nbsp;&nbsp;&nbsp;&nbsp;DWORD&nbsp;&nbsp;ExpLow(int&nbsp;&nbsp;mnIndex, int nDivisor);<BR>&nbsp;&nbsp;&nbsp;&nbsp;DWORD&nbsp;&nbsp;ExpVolume(int&nbsp;&nbsp;mnIndex, int nDivisor);<BR>&nbsp;&nbsp;&nbsp;&nbsp;DWORD&nbsp;&nbsp;ExpAmount(int&nbsp;&nbsp;mnIndex, int nDivisor);<BR>&nbsp;&nbsp;&nbsp;&nbsp;DWORD&nbsp;&nbsp;ExpDate(int&nbsp;&nbsp;mnIndex);<BR>//...............<BR><BR>};<BR>//在文档模板对对应的Cview视图中有下面这个函数,它要动态地调用文档中的数据<BR>void CKLineView::OnDraw(CDC* pDC)<BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;//我用的是文档模板,所以每一个视有一个对应的文档指针,数据全通过个这<BR>&nbsp;&nbsp;&nbsp;&nbsp;//文档指针来提取<BR>&nbsp;&nbsp;&nbsp;&nbsp;//取得文档指针<BR>&nbsp;&nbsp;&nbsp;&nbsp;CTysDoc *pDoc = (CTysDoc *)GetDocument();<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;//下面这个头文件是我在CKLineView的头文件中申请的函数指针pFunction<BR>&nbsp;&nbsp;&nbsp;&nbsp;pFunction = ???;&nbsp;&nbsp; //这里赋值是个问题,我只是想通过操纵这个赋值过<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 程来控制函数绘图的内容。!!!!!!!!!<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;//绘图函数绘图时的调用指前固定在一个函数指针上,这样就是以在不碰<BR>&nbsp;&nbsp;&nbsp;&nbsp;//绘图函数的情况下改变绘图的内容。<BR>&nbsp;&nbsp;&nbsp;&nbsp;//取得“函数指针”所取得的函数的最高值和最低值<BR>&nbsp;&nbsp;&nbsp;&nbsp;for(int i= nIndex_FirstShow; i&lt;pDoc-&gt;StockArraySize(); i++)<BR>&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(pFunction(nIndex_FirstShow,0) &gt;nView_Top)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;nView_Top = pFunction(nIndex_FirstShow,0);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(pFunction(nIndex_FirstShow,0) &lt;nView_Bottom)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;nView_Bottom = pFunction(nIndex_FirstShow,0);<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;//绘图。。。。如:<BR>&nbsp;&nbsp;&nbsp;&nbsp;pDC-&gt;MoveTo(30,pFunctin(10));<BR>&nbsp;&nbsp;&nbsp;&nbsp;pDC-&gt;LineTo(30,pFunctin(11));<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;//。。。。。。<BR><BR><BR>}
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:米罗 回复日期:2003-08-01 23:03:24
<br>内容:函数传址不行吗?我试了可以呀。你试了吗?<BR>你将CDOC中那个要被传址的函数定义为static型的,就可以了!
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:米罗 回复日期:2003-08-01 23:19:02
<br>内容:真晕,你是没看见我给你的回复呢还是方法不行呢?<BR>http://www.copathway.com/cndevforum/subject_view.asp?subject_id=48345&amp;forum_id=34<BR>http://www.copathway.com/cndevforum/subject_view.asp?subject_id=48625&amp;forum_id=34
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:mesen 回复日期:2003-08-01 23:59:14
<br>内容:我不能把那个要被传址的函数(close())设成static的原因<BR>是因为这个函数要调用同类中的一个数组,如果把这个(要传址的函数)close()函数给static了,那么它要调用的这个数组也就得static了才可以,要不然这个函数就等于失效了(无法再直接调用数组中的的数据了,而他的功能就是调用数组中的数据进行加工),而且还根本通不过编译。会提示说“静态函数不能调用动态数据成员Array".<BR>但我又不能把数组ARRAY也给static了吧,那样怎么初始化呀,“静态数组”初始化怎么进行呀???
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:米罗 回复日期:2003-08-02 00:12:22
<br>内容:呵呵,原来是这样呀!<BR>那你就定义为static数组吧。<BR>在类中定义一下例如static int t[345];<BR>然后再类的外面(相当于全局变量)再定义一下,如下:<BR>int CDoc::t[30];<BR>这样就可以了,还要初始化吗?
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:mesen 回复日期:2003-08-02 00:14:22
<br>内容:TysDoc.obj : error LNK2001: unresolved external symbol "public: static unsigned long __cdecl CTysDoc::iii(int,int)" (?iii@CTysDoc@@SAKHH@Z)<BR>Debug/Tys.exe : fatal error LNK1120: 1 unresolved externals<BR>Error executing link.exe.<BR>Tys.exe - 2 error(s), 0 warning(s)<BR><BR>我直接将iii(int a,int b)设成&nbsp;&nbsp;static iii(int a,int b)<BR>然后在同类的构造函数中进行传值:<BR>pFunction = iii;<BR>结构就给出了以上连接错误的信息。<BR>我搞不明白是什么意思。<BR><BR>
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:米罗 回复日期:2003-08-02 00:16:36
<br>内容:iii的返回值呢?
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:mesen 回复日期:2003-08-02 00:21:48
<br>内容:对不起,这样是可以通过!我刚才没给iii定义搞笑话了<BR><BR>我要问题是怎么给那个StockDataArray数组初行初始化呀。

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -