关于窗体更新问题。跪求达人~

来源:百度知道 编辑:UC知道 时间:2024/06/08 05:17:40
我刚刚学WINAPI。
我想按tab键,按一下显示一些文字在按一下显示其他。用作切换。
case '\t':// tab
if(c!=0)
{
if(lc==0){
bb= read->filh;
lc++;
InvalidateRect (hwnd, NULL, TRUE) ;
}
else{
bb= read->fil;
lc--;
InvalidateRect (hwnd, NULL, TRUE) ;
}
在paint里
case WM_PAINT:
hdc = BeginPaint (hwnd, &ps) ;
si.cbSize = sizeof (si) ;
si.fMask = SIF_POS ;
GetScrollInfo (hwnd, SB_HORZ, &si) ;
iHorzPos = si.nPos ;
for (i=0;i<bb.length();i++){
y = cyChar * (line - iVertPos+2) ;
a[z]=bb[i];
z++;
if((int)bb[i]==10)
{
TextOut (hdc, 0, y, a,z-1) ;
line++;
z=0;
}
}
EndPaint (hwnd, &ps) ;
return 0 ;

这里我只是按tab把输出的字符串BB的内容变了。
请问为什么我本来运行就有文字,但是按下tab,就清空了。啥都没了。我要他变另外段文字。。
是不是更新print不是这么更新的。?
好了我知道了。我错了。是静态的问题。。
我换问题了。
类里面调用怎么才能一直调用?而不用用一次就要初始化一次。。。把类设成全局?

可以设成单实例的类。
比如class A
A里有个自己的指针类型的成员变量 A* me;
把构造函数声明成私有。然后声明一个静态方法static A* instance();
A* A::instance()
{
if(NULL==me){me=new A;}
return me;
}
这样只初始化一次。用的时候这样用A::instance()->XXX();