回 帖 发 新 帖 刷新版面

主题:TextOut牋and RegEnumerateKeyEX

多次调用TextOut(),但后面的调用不起作用.
RegEnumerateKeyEx()多次调用返回同样的结果.
请教各位大虾.

回复列表 (共5个回复)

沙发

给出一部分代码吧,一般不会出现这种问题。拭试将窗口属性加上CS_OWNDC,

板凳

1. TextOut的代码来自VC++6.0自动生成的Win32 Application的工程,只不过我把调用TextOut的那段代码改了一点,先定义了一个全局变量 int i=1,然后回到TextOut处,改为:

TextOut(hdc,0,0,itoa(i,string,10),strlen(string));
i++;
Beep(1000,200);
每次Beep函数都执行了,但窗口输出的一直是“1”;

2.
HKEY hk;
LONG err;
RegOpenKeyEx(HKEY_LOCAL_MACHINE,"system",0,KEY_ALL_ACCESS,&hk);
RegOpenKeyEx(hk,"currentcontrolset",0,KEY_ALL_ACCESS,&hk);
RegOpenKeyEx(hk,"control",0,KEY_ALL_ACCESS,&hk);
DWORD n1,n2;
char s1[100],s2[100];
FILETIME tm;
err=RegEnumKeyEx(hk,0,s1,&n1,NULL,s2,&n2,&tm);
while(err!=ERROR_NO_MORE_ITEMS)
{
err=RegEnumKeyEx(hk,0,s1,&n1,NULL,s2,&n2,&tm);


}
...
执行结果是,egEnumKeyEx中的s1竟然18次返回"AGP"

3 楼

问题的补充说明:
关于TextOut的那个程序:在窗口最大化时,或者移动窗口使TextOut输出的字符移到屏幕之外后,TextOut起作用;但是当向右把窗口移出屏幕之外一点再移动回来(这样做是为了调用TextOut同时不使TextOut输出的字符移到屏幕之外),这时,TextOut不起作用,也就是说窗口输出的字符不变化。

4 楼

找到原因:
hdc要用GetDC()函数,用BeginPaint()获取的hdc只适用无效区域。

5 楼

谢谢。
还请再考虑一下RegEnumKeyEx的问题。

我来回复

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