论坛: 编程破解 标题: VC++的编程问题,求教!! 复制本贴地址    
作者: hongyang [hongyang]    论坛用户   登录
各位好:
  本人在看书中遇到一个编程的例子,其中有几处很是不懂,望能给予解答、指教!!谢谢!!

一处是关于设置Tab停止位置的,代码如下:
int CMsgWnd::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
TEXTMETRIC tm;
CDC*pDC=GetDC();
pDC->GetTextMetrics(&tm);
m_cxText=tm.tmAveCharWidth;
m_cyText=tm.tmHeight;
ReleaseDC(pDC);
从此开始:
int cx=24;          //设置Tab停止位置
for (int i=0;i<7;i++)
{
m_anTabs[i]=m_cxText*cx+15;
cx+=8;
}
m_cyPixels=m_cyText;
return CFrameWnd::OnCreate(lpCreateStruct);
}

应用好象是在下面的代码中:
void CMsgWnd::ShowMouseState(CString str,CPoint point)
{
#define LOBIT(b)((b)&0x01)
CString strout;

strout.Format("%s\tx=%u\ty=%u",str,point.x,point.y);
if(m_cyPixels>=m_cyClient-m_cyText)
{
Invalidate();
m_cyPixels=0;
}

GetDC()->TabbedTextOut(5,m_cyPixels,strout,7,m_anTabs,0);
m_cyPixels+=m_cyText;
}

另一处是上面代码中的#define LOBIT(b)((b)&0x01)不懂,请指教!!
还有下面代码中的#define LOBIT(b)((b)&0x01)不懂,如下:

void CMsgWnd::ShowKeyInfo(CString str,UINT nChar,UINT nRepCnt,UINT nFlags)
{
#define LOBIT(b)((b)&0x01)
CString strHeader="Message\t Char\t Rep\t Scan\t Ext\t Con\t Prev\t Trans";

CString strOut;
strOut.Format("%s\t%c\t%u\t%u\t%u\t%u\t%u\t%u",str,nChar,
nRepCnt,LOBYTE(nFlags),LOBIT(nFlags>>8),LOBIT(nFlags>>13),LOBIT(nFlags>>14),LOBIT(nFlags>>15));

if(m_cyPixels>=m_cyClient-m_cyText)
{
Invalidate();
m_cyPixels=0;
}

GetDC()->TabbedTextOut(5,0,strHeader,7,m_anTabs,0);
GetDC()->TabbedTextOut(5,m_cyPixels,strOut,7,m_anTabs,0);
m_cyPixels+=m_cyText;
}

望各位给与解答指教!!谢谢!!

地主 发表时间: 10/07 00:17

回复: shesh [shesh]   版主   登录
那只是个宏定义.
#define LOBIT(b)((b)&0x01)

比如你用的时候LOBIT(1)

就是1&0x01了.

B1层 发表时间: 10/07 03:10

回复: hongyang [hongyang]   论坛用户   登录
无可非议版主:
    您好!很谢谢您的指点,您的解答对我真的很有用,谢谢!

我还想问您上面的那个“设置Tab停止位置”是怎么一回事,我还是不懂,望再指点一下!!谢谢!!

我还想问一下,对于VC类的学习,怎么学才是一个比较好的方法? 

                                                                                                                                                                                                                                                                                       




B2层 发表时间: 10/07 10:53

回复: 286 [unique]   版主   登录
//设置Tab停止位置
是不是TAB控件中每一个标签的位置呀?
对于TAB控件每一个标签其实就是一个对话框,你在这个文件的同名头文件中找一个m_anTabs是如何定义的,看是控件还是一个其他类型的数组变量。

B3层 发表时间: 10/08 17:16

论坛: 编程破解

20CN网络安全小组版权所有
Copyright © 2000-2010 20CN Security Group. All Rights Reserved.
论坛程序编写:NetDemon

粤ICP备05087286号