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

📄 subject_21073.htm

📁 一些关于vc的问答
💻 HTM
字号:
<p>
序号:21073 发表者:longren 发表日期:2002-11-13 15:05:26
<br>主题:一定要弄懂的问题
<br>内容:1.<BR>HWND hwnd=GetDlgItem(m_hWnd,IDC_EDIT1);<BR>错误为error C2664: 'void __thiscall CWnd::GetDlgItem(int,struct HWND__ ** ) const' : cannot convert parameter 1 from 'struct HWND__ *' to 'int'<BR>假如为HWND hwnd=::GetDlgItem(m_hWnd,IDC_EDIT1);就正确了,为什么加这几个点就正确了。<BR>2.<BR>CWnd *pWnd = GetDlgItem(IDC_EDIT1);<BR>pWnd-&gt;SetWindowText(strTime);假如我用<BR>HWND hwnd=::GetDlgItem(m_hWnd,IDC_EDIT1);下一句我用了<BR>hwnd-&gt;SetWindowText(strTime);是错误的,怎么改正啊,我晓得还有一种等价的方法为<BR>CEdit *pEdit = (CEdit*)GetDlgItem(IDC_EDIT1);<BR>CEdit-&gt;SetWindowText(strTime);<BR>3.假如我这么写HWND *hwnd=::GetDlgItem(m_hWnd,IDC_EDIT1);<BR>因为我想利用指针去操作的,但是有错误为errorC2440: 'initializing' : cannot convert from 'struct HWND__ *' to 'struct HWND__ ** '<BR>HWND是一个结构吗,是结构应该可以用指针啊,请教高手解答这个简单问题的。<BR>
<br><a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p>
<hr size=1>
<blockquote><p>
回复者:man_chang 回复日期:2002-11-13 15:39:15
<br>内容:answer:<BR>1.在MFC环境下使用WIN32 API 函数时,::来告诉编译系统现在使用的是Win32的API函数。<BR>2.hwnd是HWND(可以看成一个数据类型)类型的值,实际上是一个32位数,系统知道如何去解析。他不是指针,而SetWindowText()应使用CWnd*类型指针操作。可以使用CWnd中的FromHandle&nbsp;&nbsp;()函数来把HWND转换为CWnd*指针。<BR>3.HWND是不能定义成指针的.
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:longren 回复日期:2002-11-13 16:19:30
<br>内容:感谢你的答复,蛮热心的。<BR>能说明HWND为什么不能定义为指针呢,是数据结构不是应该可以的吗?第二问能说详细点吗?
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
<font color=red>答案被接受</font><br>回复者:man_chang 回复日期:2002-11-13 16:59:03
<br>内容:HWND不是一个结构,他是一个窗口句柄类型,句柄是一个数(通常为32位),他代表的是一个窗口对象。句柄的实际值为多少,对程序来说无关紧要,Windows知道如何使用她来引用相应的对象。通常在Win32中的许多函数都有句柄变量,他的作用就是来说明该函数操作的对象,即标示一个窗口,不然以窗口为例,那么多窗口,程序如何知道操作那一个窗口呢。在Windows中有许多种句柄变量,HWND知识窗口句柄。而在MFC中用类来把表示操作对象的句柄封装了起来。多学一点面向对象的知识吧,才能理解MFC中的类及其下面的成员函数实际上是对Win32 Api函数的相应封装。<BR>就如:<BR>HWND hwnd=::GetDlgItem(m_hWnd,IDC_EDIT1);<BR>CWnd *pWnd = GetDlgItem(IDC_EDIT1);<BR>两个操作本质一样,只是表现不一样。CWnd *pWnd = GetDlgItem(IDC_EDIT1);中把HWND hwnd=::GetDlgItem(m_hWnd,IDC_EDIT1);中的m_hWnd由窗口本身替代了,实际上在CWnd *pWnd = GetDlgItem(IDC_EDIT1);语句中,GetDlgItem(IDC_EDIT1)前面隐藏了this指针,即窗口对象指针。可以写成CWnd *pWnd = this-&gt;GetDlgItem(IDC_EDIT1);<BR><BR>既然HWND是一个数,那么定义为一个指针有用吗,是什么意思?
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:man_chang 回复日期:2002-11-13 17:11:22
<br>内容:补充:<BR>::GetDlgItem(m_hWnd,IDC_EDIT1);返回的是HWND类型,如果定义成HWND*类型,返回值的类型不匹配,肯定出错。既然HWND是一个数,那么定义为一个指针在这里有用吗?<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>
回复者:longren 回复日期:2002-11-13 17:51:06
<br>内容:说的好,说的详细。感谢高手你唯一的表示就是给分,以后请多指教。
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>

⌨️ 快捷键说明

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