Thirteenth days     76

1. StringBuffer( master )    76

(1) explain :    77

(2)StringBuffer Construction method of     77

(3)StringBuffer Common features of     77

(4)StringBuffer The practice of ( Do it again )    78

(5) Interview questions     82

(6) Attention problem :    83

2. Array advanced and Arrays( master )    83

(1) Sort     83

A: Bubble sort     83

B: Selection sort     83

(2) lookup     84

A: Basic search     84

B: Two points search ( Binary search )    85

(3)Arrays Tool class     86

3. Integer( master )    88

(1) explain :    88

(2)Integer Construction method of     89

(3)String and int Mutual conversion of     89

(4) Other functions ( understand )    89

(5)JDK5 New features     89

(6) Interview questions     90

4. Character( understand )    90

(1)Character Construction method     90

(3) Case study :    91

 

Thirteenth days

1. StringBuffer( master )
    (1) explain :

Using strings for stitching , It's time consuming and memory consuming , And this kind of splicing operation is more common ,

To solve this problem ,Java Provided.

     A string buffer class .StringBuffer For our use .

Variable character sequence for thread safety

    (2)StringBuffer Construction method of

        A: public
StringBuffer()
: Nonparametric construction method ( The default volume 16 Characters )

        B: public
StringBuffer(int capacity)
: String buffer object of specified capacity

        C: public
StringBuffer(String str)
: Specifies the string buffer object for the string content

( Theoretical capacity = String length + The default volume 16 Characters )

    (3)StringBuffer Common features of

        A: Add functionality

public StringBuffer append(String str) :

You can add any type of data to the string buffer , And return the string buffer itself

public StringBuffer insert(int
offset, String str) :

Insert any type of data into the string buffer at the specified location , And return the string buffer itself

        B: Delete function

public StringBuffer deleteCharAt(int
index):

Delete the characters in the specified position ( Delete only one character ), And return the buffer itself

public StringBuffer delete(int
start, int
end)

Delete the content from the specified position to the specified end position , And return the buffer itself

        C: Replacement function

public StringBuffer replace(int
start, int
end, String str):

from start Start to end use str Replace

        D: Reverse function

            public StringBuffer reverse(): String inversion

        E: Interception function ( Notice the return value )

Be careful : The truncated substring is returned to a new string , The original string has not been changed

            public String substring(int
start)

public String substring(int
start, int
end)

F: Other methods :

public
int capacity() : Return to current capacity . Theoretical value

public
int length(): Return length ( Number of characters ). actual value

    (4)StringBuffer The practice of ( Do it again )

        A:String and StringBuffer transformation ?

            String -- > StringBuffer

                 The way 1: By construction method

The way 2: adopt append Method

            StringBuffer --> String

                 The way 1: By construction method

The way 2: adopt toString() Method

/*

* Why do we talk about class to class conversions :

* A -- B Transformation

* We put A Convert to B, It's actually for the use of B The function of .

* B -- A Transformation

* What we might want is A type , So we have to turn back .

*

* String and StringBuffer Mutual conversion of ?

*/

public class MainDemo {

    public static void main(String[] args) {

        // String --- StringBuffer

        String s = "hello";

        // Be careful : The value of a string cannot be assigned directly to StringBuffer

        // StringBuffer sb = "hello";

        // StringBuffer sb = s;

        // The way 1: By construction method

        StringBuffer sb = new StringBuffer(s);

: adopt append() Method

        StringBuffer sb2 = new StringBuffer();

        sb2.append(s);

        System.out.println("sb:" + sb);

        System.out.println("sb2:" + sb2);

        System.out.println("---------------");

 

        // StringBuffer --- String

        StringBuffer buffer = new StringBuffer("java");

        // String(StringBuffer buffer)

        // The way 1: By construction method

        String str = new String(buffer);

: adopt toString() Method

        String str2 = buffer.toString();

        System.out.println("str:" + str);

        System.out.println("str2:" + str2);

    }

}

 

        B: String splicing

            

/*

* demand : Stitching arrays into a string

*/

public class MainDemo {

    public static void main(String[] args) {

        // Define an array

        int[] arr = { 44, 33, 55, 11, 22 };

 

        // Define functions

: use String The way to do the stitching

        String s1 = arrayToString(arr);

        System.out.println("s1:" + s1);

 

        // The way 2: use StringBuffer The way to do the stitching

        String s2 = arrayToString2(arr);

        System.out.println("s2:" + s2);

    }

 

    // use StringBuffer The way to do the stitching

    public static String arrayToString2(int[] arr) {

        StringBuffer sb = new StringBuffer();

 

        sb.append("[");

        for (int x = 0; x < arr.length; x++) {

            if (x == arr.length - 1) {

                sb.append(arr[x]);

            } else {

                sb.append(arr[x]).append(", ");

            }

        }

        sb.append("]");

 

        return sb.toString();

    }

 

    // use String The way to do the stitching

    public static String arrayToString(int[] arr) {

        String s = "";

 

        s += "[";

        for (int x = 0; x < arr.length; x++) {

            if (x == arr.length - 1) {

                s += arr[x];

            } else {

                s += arr[x];

                s += ", ";

            }

        }

        s += "]";

 

        return s;

    }

}

 

        C: Invert the string

package cn.itcast01;

 

import java.util.Scanner;

/*

* demand : Invert the string

*/

public class MainDemo {

    public static void main(String[] args) {

        // Keyboard input data

        Scanner sc = new Scanner(System.in);

        System.out.println(" Please input data :");

        String s = sc.nextLine();

 

: use String Make a splice

        String s1 = myReverse(s);

        System.out.println("s1:" + s1);

: use StringBuffer Of reverse() function

        String s2 = myReverse2(s);

        System.out.println("s2:" + s2);

    }

 

    // use StringBuffer Of reverse() function

    public static String myReverse2(String s) {

        // StringBuffer sb = new StringBuffer();

        // sb.append(s);

 

        // StringBuffer sb = new StringBuffer(s);

        // sb.reverse();

        // return sb.toString();

 

        // Simple version of

        return new StringBuffer(s).reverse().toString();

    }

 

    // use String Make a splice

    public static String myReverse(String s) {

        String result = "";

 

        char[] chs = s.toCharArray();

        for (int x = chs.length - 1; x >= 0; x--) {

            // char ch = chs[x];

            // result += ch;

            result += chs[x];

        }

 

        return result;

    }

}

 

        D: Determine whether a string is symmetric

import java.util.Scanner;

/*

* demand : Determine whether a string is a symmetric string

* for example "abc" Not a symmetric string ,"aba"、"abba"、"aaa"、"mnanm" It's a symmetric string

*

* analysis :

*          Determine whether a string is a symmetric string , I just need to put

*              Compare the first with the last

*              The second is compared to the penultimate

*             ...

.

*/

public class MainDemo {

    public static void main(String[] args) {

        // Create a keyboard entry object

        Scanner sc = new Scanner(System.in);

        System.out.println(" Please enter a string :");

        String s = sc.nextLine();

 

        // One by one comparison

        boolean b = isSame(s);

        System.out.println("b:" + b);

 

        // With the inversion function of string buffer

        boolean b2 = isSame2(s);

        System.out.println("b2:" + b2);

    }

 

    // With the inversion function of string buffer

    public static boolean isSame2(String s) {

        return new StringBuffer(s).reverse().toString().equals(s);

    }

 

    // public static boolean isSame(String s) {

    // // Turns a string into an array of characters

    // char[] chs = s.toCharArray();

    //

    // for (int start = 0, end = chs.length - 1; start <= end; start++, end--) {

    // if (chs[start] != chs[end]) {

    // return false;

    // }

    // }

    //

    // return true;

    // }

 

    // One by one comparison

    public static boolean isSame(String s) {

        boolean flag = true;

 

        // Turns a string into an array of characters

        char[] chs = s.toCharArray();

 

        for (int start = 0, end = chs.length - 1; start <= end; start++, end--) {

            if (chs[start] != chs[end]) {

                flag = false;

                break;

            }

        }

 

        return flag;

    }

}

 

    (5) Interview questions

         Little details :

            StringBuffer: synchronous , Thread safe 、 Data security , Low efficiency .

            StringBuilder: Out of sync , Data is not secure , Efficient .

        A:String,StringBuffer,StringBuilder The difference between ?

answer :

1. String: Length and content are immutable

2. StringBuffer and StringBuilder It's all variable in length and content

3.String Buffer It's synchronous , Data security , Low efficiency ,; and StringBuilder It's out of sync , Data not available                  Security , Efficiency makes

        B:StringBuffer The difference with arrays ?

answer :

Both can be seen as a container , You can load other data

But what? ,StringBuffer The final data is a string data ,

And data can hold a variety of data , But it has to be the same data type

    (6) Attention problem :

        1. String As a formal parameter , The effect is the same as the basic type passed as a formal parameter

The change of formal parameters does not affect the actual parameters

  1. StringBuffer As a formal parameter . The assignment does not change the actual value , But the value changes made by calling its methods , be

    It changes the actual value

    

2. Array advanced and Arrays( master )
    (1) Sort

        A: Bubble sort

             Compare the adjacent elements in pairs , Put the big one back , The first time , The maximum value appears at the maximum index .

Empathy , The other elements can be arranged .

             Be careful : After the first comparison , The next time we compare , It will reduce the comparison of one element

            

public static void bubbleSort(int[] arr) {

        for (int x = 0; x < arr.length - 1; x++) {

            for (int y = 0; y < arr.length - 1 - x; y++) {

                if (arr[y] > arr[y + 1]) {

                    int temp = arr[y];

                    arr[y] = arr[y + 1];

                    arr[y + 1] = temp;

                }

            }

        }

    }

 

            

        B: Selection sort

             hold 0 Elements of index , And index 1 Later elements are compared , The first time ,

The minimum appears in 0 Indexes . Empathy , The other elements can be arranged .

            

            

public static void selectSort(int[] arr) {

        for (int x = 0; x < arr.length - 1; x++) {

            for (int y = x + 1; y < arr.length; y++) {

                if (arr[y] < arr[x]) {

                    int temp = arr[x];

                    arr[x] = arr[y];

                    arr[y] = temp;

                }

            }

        }

    }

 

    (2) lookup

        A: Basic search

             Use scenarios : In the case of array disorder ( From the beginning to the end )

            

            

public static int getIndex(int[] arr, int value) {

        int index = -1;

 

        for (int x = 0; x < arr.length; x++) {

            if (arr[x] == value) {

                index = x;

                break;

            }

        }

        return index;

    }

 

        B: Two points search ( Binary search )

             Application scenarios : In the case of ordered arrays

             matters needing attention : For unordered arrays , Sort first , Search after , There is a problem ?

answer : Because the array itself is unordered , So we can't use binary search in this case

So you sort it first , But when you sort, you have changed the element index of the array

            

public static int binarySearch(int[] arr, int value) {

        // Define the minimum index

        int min = 0;

        // Define the maximum index

        int max = arr.length - 1;

        // Calculate the middle index

        int mid = (min + max) / 2;

        // Compare the value of the intermediate index with the value being searched

        while (arr[mid] != value) {

            // If the value of the intermediate index Than The value looked up is too large

            // Then the maximum index
= The original intermediate index - 1

            if (arr[mid] > value) {

                max = mid - 1;

                // If the value of the intermediate index Than The value being looked up is small

                // Then the minimum index
= Intermediate index + 1

            } else if (arr[mid] < value) {

                min = mid + 1;

            }

            // Join judgment ( If there is no processing for this value )

            if (min > max) {

                return -1;

            }

 

            mid = (min + max) / 2;

        }

 

        return mid;

    }

 

    (3)Arrays Tool class

        A: Is a tool class that operates on arrays . Including sorting and searching functions .

        B: The way to master ( Make up for yourself )

            1:public
static String toString(int[] a) : Turn an array into a string

            2:public
static
void sort(int[] a) : Sort the array

3:public
static
int binarySearch(int[] a, int
key): Two points search , Returns the index of the lookup value     

  1. Arrays Source code analysis of tool class

    Public static String toString(int[] a) Source code analysis

    public static int binarySearch(int[] a, int key) Source code analysis

     

    public static String toString(int[] a) Source code analysis

    public static void sort(int[] a)
    The bottom line is quicksort , Just know . Have time to watch , Ask me if you have any questions

    public static int binarySearch(int[] a,int key)

    Development principles :

         As long as it's an object , We have to judge whether the object is null.

     

    int[] arr = { 24, 69, 80, 57, 13 };

    System.out.println(" Before ordering :" + Arrays.toString(arr));

    // This is the source code

        public static String toString(int[] a) {

            // a -- arr -- { 24, 69, 80, 57, 13 }

     

            if (a == null)

                return "null"; // Indicates that the array object does not exist

            int iMax = a.length - 1; // iMax=4;

            if (iMax == -1)

                return "[]"; // Indicates that the array exists , But there are no elements .

     

            StringBuilder b = new StringBuilder();

            b.append('['); // "["

            for (int i = 0;; i++) {

                b.append(a[i]); // "[24, 69, 80, 57, 13"

                if (i == iMax)

                    // "[24, 69, 80, 57, 13]"

                    return b.append(']').toString();

                b.append(", "); // "[24, 69, 80, 57, "

            }

        }

    public static int binarySearch(int[] a, int key) Source code analysis

     

    int[] arr = {13, 24, 57, 69, 80};

    System.out.println("binarySearch:" + Arrays.binarySearch(arr, 577));

     

    // Source code

        public static int binarySearch(int[] a, int key) {

            // a -- arr -- {13, 24, 57, 69, 80}

            // key -- 577

            return binarySearch0(a, 0, a.length, key);

        }

    private static int binarySearch0(int[] a, int fromIndex, int toIndex, int key) {

            // a -- arr -- {13, 24, 57, 69, 80}

            // fromIndex -- 0

            // toIndex -- 5

            // key -- 577

     

            int low = fromIndex; // low=0

            int high = toIndex - 1; // high=4

     

            while (low <= high) {

                int mid = (low + high) >>> 1; // mid=2,mid=3,mid=4

                int midVal = a[mid]; // midVal=57,midVal=69,midVal=80

     

                if (midVal < key)

                    low = mid + 1; // low=3,low=4,low=5

                else if (midVal > key)

                    high = mid - 1;

                else

                    return mid; // key found

            }

            return -(low + 1); // key not found.

        }

     

        (5) Sort the characters in a string

             give an example :

                "edacbgf"

                 Get the results

                "abcdefg"

     

    3. Integer( master )

        (1) explain :

    In order to do more with the basic types of data ,Java For each basic type, the corresponding packing type is provided

            byte         Byte

            short        Short

            int            Integer

            long        Long

            float        Float

            double        Double

            char        Character

            boolean        Boolean

        (2)Integer Construction method of

            A: Integer i = new Integer(100);

            B: Integer i = new Integer("100");

                 Be careful : The string here must be composed of numeric characters

        (3)String and int Mutual conversion of

            A:String --> int

                Integer.parseInt("100");

            B:int --> String

                String.valueOf(100);

        (4) Other functions ( understand )

             One 、 Hexadecimal conversion

    1:public
    static String toBinaryString(int
    i) : Binary system

    2:public
    static String toOctalString(int
    i)
    : octal

    3:public
    static String toHexString(int
    i)
    : Hexadecimal

    1. The range of decimal numbers :

      Range :2 - 36

      because : Only 0 -9 and a - z common 36 Two numbers and letters

      3、 ... and 、 Decimal system To Other bases

      1: public static String toString(int i, int radix):

      Parameter description :i : Express 10 Base value

      Radix: Representation system

      for example :Integer.toString(100, 8);     Express the 10 It's binary 100 Turn into 8 Base number

    Integer.toString(100, 16); Express the 10 It's binary 100 Turn into 16 Base number

    1. Other bases To Decimal system

      1:public
      static
      int parseInt(String s, int
      radix)

      for example : Integer.parseInt("100", 2);
      It means to put binary 100 Turn into 10 Base number

      Integer.parseInt("67", 8);
      Express the 8 It's binary 67 Turn into 10 Base number

        (5)JDK5 New features

             Automatic boxing      Basic types -- Packaging type

             Automatic dismantling      Packaging type -- Basic types

    Pay attention to a small problem :

    In the use of ,Integer x = null; The code will appear NullPointException abnormal

    Suggest : Judge first whether it is null, And then use

            

             Just understand the following code :

                

    Integer i = 100;

            i += 200;

            // Through decompiled code

            // Integer ii = Integer.valueOf(100); // Automatic boxing

            // ii = Integer.valueOf(ii.intValue() + 200); // Automatic dismantling , And then automatic packing

            // System.out.println((new StringBuilder("ii:")).append(ii).toString());

     

        (6) Interview questions

             Conclusion : Yes Integer When data of type is assigned directly , If in -128 To 127 Between ,

    It gets data directly from the buffer pool , Otherwise, create a new one Integer Object and return

    /*

             * Look at the result of the program

             *

    Between , It gets data directly from the buffer pool

             */

            Integer i1 = new Integer(127);

            Integer i2 = new Integer(127);

            System.out.println(i1 == i2);//false

            System.out.println(i1.equals(i2));//true

            System.out.println("-----------");

     

            Integer i3 = new Integer(128);

            Integer i4 = new Integer(128);

            System.out.println(i3 == i4);//false

            System.out.println(i3.equals(i4));//true

            System.out.println("-----------");

     

            Integer i5 = 128;

            Integer i6 = 128;

            System.out.println(i5 == i6);//false

            System.out.println(i5.equals(i6));//true

            System.out.println("-----------");

     

            Integer i7 = 127;

            Integer i8 = 127;

            System.out.println(i7 == i8);//true Key points

            System.out.println(i7.equals(i8));//false

     

    Data between , Made a data buffer pool , If the data is in this range , No new space is created each time

            // Integer ii = Integer.valueOf(127);

     

    4. Character( understand )

        (1)Character Construction method     

            Character ch = new Character('a');

        (2) The way to master :( Make up for yourself )

            A: Determine whether the given character is uppercase     

                public
    static
    boolean isUpperCase(char ch)

            B: Determine whether a given character is a lowercase character

                public
    static
    boolean isLowerCase(char ch)

            C: Determine whether the given character is a numeric character

                public
    static
    boolean isDigit(char ch)

            D: Convert a given character to uppercase

                public
    static
    char toUpperCase(char ch)

            E: Convert a given character to lowercase

                public
    static
    char toLowerCase(char ch)

        (3) Case study :

             Count uppercase in string , The number of occurrences of lowercase and numeric characters

            

    import java.util.Scanner;

    /*

    * Count the uppercase characters in a string , Lowercase characters , The number of occurrences of numeric characters .

    ( Regardless of other characters )

    *

    * analysis :

    *         A: Define three statistical variables .

    *             int bigCont=0;

    *             int smalCount=0;

    *             int numberCount=0;

    *         B: Enter a string on the keyboard .

    *         C: Convert string to character array .

    *         D: Traverse the character array to get every character

    *         E: Judge that the character is

    *              Capitalization     bigCount++;

    *              A lowercase letter     smalCount++;

    *              Numbers     numberCount++;

    *         F: Output the result

    */

    public class MainDemo {

        public static void main(String[] args) {

            // Define three statistical variables .

            int bigCount = 0;

            int smallCount = 0;

            int numberCount = 0;

     

            // Enter a string on the keyboard .

            Scanner sc = new Scanner(System.in);

            System.out.println(" Please enter a string :");

            String line = sc.nextLine();

     

            // Convert string to character array .

            char[] chs = line.toCharArray();

     

            // The calendar character array gets every character

            for (int x = 0; x < chs.length; x++) {

                char ch = chs[x];

     

                // Judge the character

                if (Character.isUpperCase(ch)) {

                    bigCount++;

                } else if (Character.isLowerCase(ch)) {

                    smallCount++;

                } else if (Character.isDigit(ch)) {

                    numberCount++;

                }

            }

     

            // Output the result

            System.out.println(" Capital :" + bigCount + " individual ");

            System.out.println(" Lowercase letters :" + smallCount + " individual ");

            System.out.println(" Numeric character :" + numberCount + " individual ");

        }

    }

     

     

javaSE More related articles on day 13

  1. javaSE Day 23

    Day 23     338 1. Overview of processes and threads     338 2. Multithreading ( understand )    339 (1) Multithreading : An application has multiple execution paths     339 (2)Java The operation principle of the program and JVM The start-up is multi line ...

  2. JavaSE Network programming of learning notes ( 23 )

    port : Physical port : Logical port : The logical address used to identify the process , Identification of different processes : Valid port :0~65535, among 0~1024 Ports used or reserved by the system . java  in ip object :InetAddress. import ja ...

  3. JavaSE Multithreading of learning notes ( 13、 ... and )

    Multithreading : process : The procedure in progress . In fact, a process is an application's memory allocation space at runtime . Threads : In fact, it is a program execution control unit in the process , One execution path . The process is responsible for marking the space of the application . Threads are responsible for the execution of applications ...

  4. JAVASE( 13、 ... and ) exception handling

    Personal blog network :https://wushaopei.github.io/    ( You want to have more ) 1. Exception Architecture ​ explain : |-----Throwable |-----Error : There's no specific code ...

  5. JavaSE Knowledge overview set

    One .HelloWord( Document launch Java) /* When using the command line ,cmd The default encoding format for is GBK Therefore, when inputting Chinese, you need to set the encoding format bit of the file ANSI, There will be no garbled errors Be careful : 0. First use ja ...

  6. CRL Quick development framework series 13 ( nested queries )

    The catalogue of this series CRL Quick development framework series tutorial 1 (Code First Datasheets don't need to care anymore ) CRL Quick development framework Series 2 ( be based on Lambda Expression query ) CRL Quick development framework series 3 ( Update data ) CRL Quick development box ...

  7. my MYSQL The learning ( 13、 ... and ) Rights management

    my MYSQL The learning ( 13、 ... and )  Rights management my MYSQL The learning ( One ) Simple grammar my MYSQL The learning ( Two ) Data type width my MYSQL The learning ( 3、 ... and ) Look at the field length my MYSQL The learning ( Four ) ...

  8. Talk in vernacular JavaSE -- How to understand Java Bean( One )

    First , Before we start this chapter , Let's start with a general concept : So-called Java Bean, It's just one. java class , It's compiled into a suffix called .class The file of . This is it. Java Bean, Many beginners , Including myself back then , Always by these experts ...

  9. javaSE Basics 07

    javaSE Basics 07 One .static Static modifier It was used static Modified variables become shared properties , It will only be initialized once , There is only one... In memory , And every object can be accessed , Store in method area ( Data sharing area ) 1.1 stat ...

Random recommendation

  1. Premiere Pro &amp; After Effects Plug in development and debugging methods

    In giving Adobe Premiere Pro(PR) and Adobe After Effects(AE) Plug in development , There is a strong demand for real-time debugging plug-ins . In addition to business needs , Single step debugging plug-ins can also feel clearly Plugin and Hos ...

  2. java The details of abnormal attention in 2

    class A extends Exception{ A(){ super(); } A(String msg){ super(msg); } } class B extends A{ B(){ su ...

  3. DDD: When the view model 、 When both domain model and data model adopt the same type , What should we do ?

    If you take this model , The model passes between different logical layers , Take inward transmission as an example , Changes in the state of the model are made by different logic layers inside and outside , Because the encapsulation of the model in this mode is very poor , Architecture and framework to do : Clearly express how to use and repair each logic layer ...

  4. Week8 Software specifications

    1. summary The software developed by the project team is based on Android Time management software of mobile terminal , The main function is time management software , Can be used to manage to-do items , Record some information that needs to be reminded, etc . There's an event alert . And Google Account synchronization . Curriculum and other functions . ...

  5. js Verify input box amount

    $("#ipt1").keyup(function () { var reg = $(this).val().match(/\d+\.?\d{0,2}/); var txt = ' ...

  6. idea Integrate svn plug-in unit

    1. You need to install one on the machine SVN Client command line program , You can download the corresponding installation program here :http://subversion.apache.org/packages.html#windows I chose torto ...

  7. Spring Cloud Stream Strategies for dealing with consumption failure ( Two ): Custom error handling logic

    Application scenarios Last one <Spring Cloud Stream Strategies for dealing with consumption failure ( One ): Automatic retry > This paper introduces the message retrial function which will take effect by default . For some environmental reasons . Network jitter and other unstable factors can play a more important role than ...

  8. HNOI2019 summary

    HNOI2019 summary Day 1 Let's start with three questions ,T1 It's computational geometry ,T2 It's an operation tree plus \(border\),T3 It's a bit complicated . Want to T1 For more than half an hour , I found that the obtuse angle is not very good at handling , however 40 We can still write about violence , ...

  9. uWSGI and Gunicorn

    because nginx Excellent open source projects , Many students who are not servers can write many server-side programs . But you'll find in the chat , Although we have written a lot of code , But yes. wsgi What is it? ,gunicorn What is it? , It's not clear what reverse proxy is ...

  10. 【 Reprint 】OLE Control in Direct3D Rendering methods in

    original text :OLE Control in Direct3D Rendering methods in Windows The graphics on are based on GDI Of , and Direct3D Not at all , therefore , To be in 3D The window shows some Windows There are a lot of problems with controls in that , what are you having? ...