📄 course3.htm
字号:
<p>WParam</p>
<p>消息的wParam参数。</p>
<p>LParam</p>
<p>消息的lParam参数。</p>
<p class="title_2">返回值</p>
<p>返回要生成的Message对象。</p>
<p class="title_2">说明</p>
<p>用create方法生成一个封装Windows发送的消息的对象。当你的应用程序处理完这条消息时,用free方法释放这个对象。</p>
<p>Message.free</p>
<p>释放一个Message对象。</p>
<p class="title_2">语法</p>
<p>public static synchronized int free ( Message m )</p>
<p class="title_2">参数</p>
<p>m</p>
<p>将要被释放的Message对象。</p>
<p class="title_2">返回值</p>
<p>返回Message对象的result字段的值,此字段的值一般是返回给Windows的响应处理这条消息后的返回值。</p>
<p class="title_2">说明</p>
<p>调用这个方法将此消息对象送回至消息池中等待再次调用。</p>
<p>Message.getLParam</p>
<p>检取lParam参数的值,并将其转换成一个对象。</p>
<p class="title_2">语法</p>
<p>public Object getLParam ( Class cls );</p>
<p class="title_2">参数</p>
<p>cls</p>
<p>一个Class对象,用来生成一个实例。</p>
<p class="title_2">返回值</p>
<p>返回一个cls的Object实例,包含了消息中的LParam字段的信息。被cls参数指定的类必须是声明成@dll.struct继承类的类。</p>
<p class="title_2">说明</p>
<p>用getLParam方法去检取消息中LParam参数字段的值并将其转换成Java对象类型,你可以用这个方法去存取包含消息信息的对象。</p>
<hr><p class="title_1"><a name="MethodInvoker代理">MethodInvoker代理</a></p>
<p>调用事件处理方法。</p>
<p>package com.ms.wfc.app</p>
<p>public multicast delegatevoid </p>
<p>MethodInvoker ( );</p>
<p class="title_2">说明</p>
<p>用MethodInvoker代理去调用那些不需要参数的方法,此代理的通常用法是调用一个控件的invoke方法或是当你需要一个简单的代理的时候。MethodInvoker代理与Java中的Runnable方法很相似,不同的是被MethodInvoker方法调用的方法可以使用任意的方法名并可以声明成私有方法。</p>
<p>下面的代码举了一个例子,用MethodInvoker代理在一个应用程序中启动一个新的线程。</p>
<pre>Private void threadRoutine ( )
{
//Thread code goes here
}</pre>
<pre>private void startThreadRoutine ( )
{
Application.createThread ( new MehtodInvoker ( this, threadRoutine ));
}</pre>
<hr><p class="title_1"><a name="Registry类">Registry类</a></p>
<p>提供系统注册表中根键值常量。</p>
<p>package com.ms.wfc.app</p>
<p>public class Registry</p>
<p class="title_2">说明</p>
<p>Registry提供了代表系统注册表根键值的RegistryKey对象。当在注册表中创建子键值或访问这些键值中的信息时需要使用这些键。下面的例子演示了如何在CURRENT_USER根键下面为某公司的应用程序创建新的子键:</p>
<p>RegistryKey myKey =</p>
<p>Registry.CURRENT_USER.createSubKey("Software\\MyCompany\\MyProduct")</p>
<p class="title_2">字段</p>
<p>Registry.CLASSES_ROOT</p>
<p>代表HKEY_CLASSES_ROOT根键。</p>
<p class="title_2">语法</p>
<p>public static final RegistryKey CLASSES_ROOT;</p>
<p class="title_2">说明</p>
<p>CLASSES_ROOT键是OLE类信息和文件关联的根键。使用该键注册你的应用程序文件扩展名或者改变现有的文件扩展名。</p>
<p>Registry.CURRENT_CONFIG</p>
<p>代表HKEY_CURRENT_CONFIG根键。</p>
<p class="title_2">语法</p>
<p>public static final RegistryKey CURRENT_CONFIG;</p>
<p class="title_2">说明</p>
<p>CURRENT_CONFIG根键是保存当前配置信息的地方。</p>
<p>Registry.CURRENT_USER</p>
<p>代表HKEY_CURRENT_USER根键。</p>
<p class="title_2">语法</p>
<p>public static final RegistryKey CURRENT_USER;</p>
<p class="title_2">说明</p>
<p>使用CURRENT_USER键保存用户指定的设置信息。你的应用程序不应该要求这些设置值预先就存在。在应用程序或注册表中应总是提供有意义的缺省值。</p>
<p>Registry.DYN_DATA</p>
<p>代表HKEY_DYN_DATA。</p>
<p class="title_2">语法</p>
<p>public static final RegistryKey DYN_DATA;</p>
<p class="title_2">说明</p>
<p>DYN_DATA是保存Windows 95和Windows 98系统动态性能数据的地方。</p>
<p>Registry.LOCAL_MACHINE</p>
<p>代表HKEY_LOCAL_MACHINE根键。</p>
<p class="title_2">语法</p>
<p>public static final RegistryKey LOCAL_MACHINE;</p>
<p class="title_2">说明</p>
<p>LOCAL_MACHINE是所有与计算机有关信息的根目录。你的应用程序不应该对该目录进行写操作,因为许多计算机上,当前的用户并没有对该目录进行写的权利。</p>
<p>Registry.PERFORMANCE_DATA</p>
<p>代表HKEY_PERFORMANCE根键。</p>
<p class="title_2">语法</p>
<p>public static final RegistryKey PERFORMANCE_DATA;</p>
<p class="title_2">说明</p>
<p>PERFORMANCE_DATA根键用于在Windows NT系统上保存动态性能数据。</p>
<p>Registry.USERS</p>
<p>代表HKEY_USERS根键。</p>
<p class="title_2">语法</p>
<p>public static final RegistryKey USERS;</p>
<p class="title_2">说明</p>
<p>USERS根键用于保存系统中所有用户的信息。要保存计算机当前用户的信息,使用CURRENT_USER键。</p>
<hr><p class="title_1"><a name="RegistryKey类">RegistryKey类</a></p>
<p>提供允许你读写系统注册表的方法。</p>
<p>package com.ms.wfc.app</p>
<p>public final class RegistryKey</p>
<p class="title_2">说明</p>
<p>使用RegistryKey类创建和删除子键并给注册表条目指定信息。你可以使用注册表保存信息,比如应用程序的设置、最近打开过的文件路径以及版信息。要获得RegistryKey的实例,使用静态方法getBaseKey,或使用Registry类的一个成员。你不能使用new关键字创建RegistryKey类的实例。</p>
<p class="title_2">方法</p>
<p>RegistryKey.close</p>
<p>关闭当前的键,而且,如果修改了内容,也将键值保存到注册表中。</p>
<p class="title_2">语法</p>
<p>public void close()</p>
<p>public void close( boolean flushCache )</p>
<p class="title_2">参数</p>
<p>flushCache</p>
<p>如果设置为true,则当修改了键值时就将键值保存到磁盘上。</p>
<p class="title_2">说明</p>
<p>close方法将关闭当前正被引用的注册表键。如果你使用第二种方法并将方法的参数设置为true,则缓冲区中任何的注册表键值信息都将保存到注册表中。使用该方法关闭分配给RegistryKey对象的注册表键值,这样就可以给该对象分配不同的注册表键值。调用第一种close方法与调用第二种方法并将参数设置为true是一样的。</p>
<p>RegistryKey.createSubKey</p>
<p>创建新的子键。</p>
<p class="title_2">语法</p>
<p>public RegistryKey createSubKey ( String subkey )</p>
<p class="title_2">参数</p>
<p>subkey</p>
<p>String对象,代表要创建的子键名字或路径。</p>
<p class="title_2">返回值</p>
<p>返回子键,如果操作失败,就返回null。</p>
<p class="title_2">说明</p>
<p>createSubKey方法通常创建RegistryKey对象的子键并给其分配一个新的RegistryKey对象。</p>
<p>如果你创建的子键已经存在,就打开该键并将初始化所用的RegistryKey对象分配给它。要创建子键树,在定义新的子键时加上反斜线(\)。记住,在Java语言中,引号中的字符串要使用双反斜线。你可以使用createSubKey方法在某个注册表根键下创建一个位置来保存你的应用程序信息。</p>
<p>下面的例子演示了如何创建一个新子键的RegistryKey对象。它使用Registry类成员来访问CURRENT_USER根键。</p>
<p>RegistryKey myKey =</p>
<p>Registry.CURRENT_USER.createSubKey("software\\MyCompany\\MyApplication");</p>
<p>RegistryKey.deleteSubKey</p>
<p>删除指定的子键。</p>
<p class="title_2">语法</p>
<p>public void deleteSubKey ( String subkey )</p>
<p class="title_2">参数</p>
<p>subkey</p>
<p>一个String对象,代表要删除的子键。</p>
<p class="title_2">异常</p>
<p>如果该子键还包含子键,就产生WFCException异常。</p>
<p class="title_2">说明</p>
<p>使用deleteSubKey方法从注册表中删除子键。要删除子键树,使用deleteSubKeyTree方法。</p>
<p>要删除分配给子键的值,使用deleteValue方法。</p>
<p class="title_2">语法</p>
<p>public void deleteSubKeyTree (String subkey )</p>
<p class="title_2">参数</p>
<p>subkey</p>
<p>一个String对象,代表要删除的子键。</p>
<p class="title_2">说明</p>
<p>使用deleteSubKeyTree方法从注册表中删除整个的子键树。要确保在删除键值时不产生异常,使用deleteSubKeyTree而不要用deleteSubKey反复,如果子键包含子键,则后者将产生异常。</p>
<p>RegistryKey.deleteValue</p>
<p>从子键中删除值。</p>
<p class="title_2">语法</p>
<p>public void deleteValue ( String name )</p>
<p class="title_2">参数</p>
<p>name</p>
<p>一个String对象,代表要删除值的名字。</p>
<p class="title_2">说明</p>
<p>使用deleteValue方法删除分配给子键的值。要删除所有子键值,使用deleteSubKey或deleteSubKeyTree方法删除整个键。</p>
<p>RegistryKey.finalize</p>
<p>释放与该对象关联的所有资源。</p>
<p class="title_2">语法</p>
<p>protected void finalize ()</p>
<p class="title_2">说明</p>
<p>finalize方法释放与RegistryKey对象关联的根键。</p>
<p>RegistryKey.getBaseKey</p>
<p>检取代表所需要的新RegistryKey对象。</p>
<p class="title_2">语法</p>
<p>public static RegistryKey getBaseKey ( int hKey )</p>
<p class="title_2">参数</p>
<p>hKey</p>
<p>要打开的HKEY_*。</p>
<p class="title_2">返回值</p>
<p>返回代表所需要键的RegistryKey对象。</p>
<p class="title_2">说明</p>
<p>使用getBaseKey方法根据特定的根键值来创建RegistryKey对象。你也可以使用Registry类成员来访问注册表中定义的根据的RegistryKey对象。</p>
<p>hKey的有效值是:HKEY_CLASSES_ROOT,</p>
<p>HKEY_CURRENT_USER,HKEY_LOCAL_MACHINE,HKEY_USERS,</p>
<p>HKEY_PERFORMANCE_DATA,HKEY_CURRENT_CONFIG,</p>
<p>HKEY_DYN_DATA。</p>
<p>RegistryKey.getSubKey</p>
<p>检取特定的子键。</p>
<p class="title_2">语法</p>
<p>public RegistryKey getSubKey ( String name )</p>
<p>public RegistryKey getSubKey ( String name, boolean readonly )</p>
<p class="title_2">参数</p>
<p>name</p>
<p>要打开的子键名字或路径。</p>
<p>Readonly</p>
<p>设置为true将只读访问指定的键值;设置为false将能读/写访问。如果没有指定该值,键值缺省就是只读的。</p>
<p class="title_2">返回值</p>
<p>返回代表所请求子键的RegistryKey对象,如果操作失败,就返回null。</p>
<p class="title_2">说明</p>
<p>使用getSubKey方法打开现有的子键并分配给一个RegistryKey对象。如果该键不存在,就返回null值。要打开现有的键或创建一个键,使用createSubKey方法。要从指定的注册表键中读取信息,使用该方法的第二个版本,并将readOnly参数设置为true以只读方式打开注册表键。如果你不知道子键的名字,使用getSubKeyNames方法来返回所指定键的所有子键。</p>
<p>RegistryKey.getSubKeyCount</p>
<p>检取指定键的子键数量。</p>
<p class="title_2">语法</p>
<p>public int getSubKeyCount ()</p>
<p class="title_2">返回值</p>
<p>返回为当前键所定义的子键数量。</p>
<p class="title_2">说明</p>
<p>使用getSubKeyCount方法获取为当前指定键所定义的子键数量。使用该方法将在for循环中遍历所有的子键。要获得包含子键名字的键值,使用getSubKeyNames方法。</p>
<p>RegistryKey.getSubKeyNames</p>
<p>检取包含当前键所有子键名字的矩阵。</p>
<p class="title_2">语法</p>
<p>public String[] getSubKeyNames ()</p>
<p class="title_2">返回值</p>
<p>返回包含所有子键名字的字符串矩阵。</p>
<p class="title_2">说明</p>
<p>使用getSubKeyNames方法来确定为当前键所定义的子键名字。使用该方法来获取子键名字列表,并确定是否定义了指定的键。要获得键中所有定义子键的数量,使用getSubKeyCount方法。要检取代表getSubKeyNames方法所获取子键的对象,使用getSubKey方法。</p>
<p>RegistryKey.getValue</p>
<p>从注册表中检取特定的值。</p>
<p class="title_2">语法</p>
<p>public Object getValue ( String name )</p>
<p>public Object getValue ( String name, Object defaultValue )</p>
<p class="title_2">参数</p>
<p>name</p>
<p>一个String对象,包含要检取值的名字。</p>
<p>DefaultValue</p>
<p>如果name不存在,就返回该值。</p>
<p class="title_2">返回值</p>
<p>返回代表与值关联的数据对象。</p>
<p class="title_2">说明</p>
<p>使用getValue方法从注册表中检取指定的值。从注册表中返回的数据必须转换为正确的Java数据类型。使用该方法的第二个版本来指明当注册表中不存在指定的值时所返回的数据。如果使用了第一个版本,则当注册表中不存在所指定的值时就返回null。要获取当前键所有数值的名字列表,使用getValueNames方法。</p>
<p>下面的例子演示了如何使用setValue方法和Font.Editor类中的getTextFromValue方法将Font对象写入注册表。它也演示了如何使用getValue方法和Font.Editor类中的getValueFromText方法从注册表中恢复Font对象。</p>
<p>Font.Editor tempEditor = new Font.Editor ()</p>
<p>RegistryKey myKey =</p>
<p>Registry.CURRENT_USER.createSubKey ( "Software\\MyCompany\\MyProduct");</p>
<p>//Store the Font to the rigistry</p>
<p>myKey.setValue ("MyValue"tempEditor,getTextFromValue ( new Font("Arial"11.0f,</p>
<p>FontSize.CHARACTERHEIGHT)));</p>
<p>//Restore the Font from registry</p>
<p>Font myFont = (Font) tempEdit.getValueFromText((String) myKey.getValue("MyValue"));</p>
<p>RegistryKey.getValueCount</p>
<p>检取当前键中所定义值的数量。</p>
<p class="title_2">语法</p>
<p>public int getValueCount()</p>
<p class="title_2">返回值</p>
<p>返回所定义值的数量。</p>
<p class="title_2">说明</p>
<p>使用getValueCount方法获取当前打开键中所定义值的数量。使用该方法辅助遍历当前键中所有的值。要获得当前键所有值的名字矩阵,使用getValueNames方法。</p>
<p>RegistryKey.getValueNames</p>
<p>检取包含当前键所定义所有值名字的字符串矩阵。</p>
<p class="title_2">语法</p>
<p>public String[] getValueNames()</p>
<p class="title_2">返回值</p>
<p>返回包含键中所有值的名字字符串的矩阵。</p>
<p class="title_2">说明</p>
<p>使用getValueNames方法确定当前键中所定义值的名字。使用该方法来获取所有值名字的列表,并确定是否定义了特定的值。要获取键中定义的所有值的数量,使用getValueCount方法。要检取代表使用getValueNames所找到值的String对象,使用getValue方法。</p>
<p>RegistryKey.setValue</p>
<p>设置注册表中指定的值。</p>
<p class="title_2">语法</p>
<p>public void setValue ( String name , Object value )</p>
<p class="title_2">参数</p>
<p>name</p>
<p>一个String字符串,代表要保存数据的名字。</p>
<p>Value</p>
<p>要保存的数据。</p>
<p class="title_2">说明</p>
<p>使用setValue方法将信息保存到指定的值中。确保你指定给value的对象可以恢复到原来的状态。许多Java Windows基础类都提供了Editor类,这样你就可以将指定的类保存为字符串并能从字符串中恢复对象。</p>
<p>下面的例子演示了如何使用setValue方法和getTextFromValue方法将Font对象写入注册表。</p>
<p>它也演示了如何使用getValue方法和getValueFromText方法(Font.Editor类)从注册表中恢复Font对象。</p>
<p>Font.Editor tempEditor = new Font.Editor ()</p>
<p>RegistryKey myKey =</p>
<p>Registry.CURRENT_USER.createSubKey ( "Software\\MyCompany\\MyProduct");</p>
<p>//Store the Font to the registry</p>
<p>myKey.setValue ( "MyValue"tempEditor,getTextFromValue ( new Font("Arial"11.0f,</p>
<p>FontSize.CHARACTERHEIGHT)));</p>
<p>//Restore the Font from registry</p>
<p>Font myFont = (Font) tempEdit.getValueFromText((String) myKey.getValue("MyValue") ;</p>
<p>RegistryKey.toString</p>
<p>检取代表该键的字符串。</p>
<p class="title_2">语法</p>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -