kkuzil.own@gmail.com

Posted
Filed under Development/C++

프로그램 시작부터 안보이게 하고싶을 경우 WinMain안에서~


ShowWindow(Application->Handle, SW_HIDE);
Application->ShowMainForm = False;


요렇게~


VC에서는 이렇게 하면 안되지.. 아마..

내공이 부족해서 왜 안되는지는 모르겠고.. 폼 위치를 바꿔버려야 한다..안보이게 슝~

함수명이 머드라... SetPosition어쩌군데.. 기억이.. 암튼 여기까지

2010/07/22 15:59 2010/07/22 15:59
Posted
Filed under Development/C++

볼랜드 포럼에서 업어온것임~

==========================

임펠리테리입니다.

void __fastcall TForm1::Button1Click(TObject *Sender)
{
    SetWindowLong(Handle, GWL_EXSTYLE, GetWindowLong(Handle, GWL_EXSTYLE) | WS_EX_LAYERED);
    SetLayeredWindowAttributes(Handle, 0, (255 * 70) / 100, LWA_ALPHA);
}
간단하죠?
참고자료는...
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnwui/html/layerwin.asp

그럼 이만...

===========================

여기까지는 코드단에서 해줄수 있는것이고~ (VC에서는 기본적으로 이렇게 처리를 해주구..)
폼 속성을 이용하면 더욱 간단하다~

FORM Inspector에서
속성중 AlphaBlend의 속성을 True로 변경후
AlphaBlendValue의 값을 0~255 값사이로 투명도를 지정해 주면된다..
역시 빌더가 쵝오야 -ㅁ-)bㅋ

CBuilder 6.0 이하는 확인 못해봤음..

2010/07/22 15:59 2010/07/22 15:59
Posted
Filed under Development/etc.

// OS Version~??
// Get the operating system.
 STRING   szTitle, szMsg, svResult, szInfo;
    NUMBER   nvResult;
    LIST     listInfo;

    if (GetSystemInfo (OS, nvResult, svResult) < 0) then
        szInfo = "Couldn't get Operating System info.";
    else
        switch (nvResult)
            case IS_WINDOWSNT:
                szInfo = "OS: Windows NT";
            case IS_WINDOWS9X:
                GetSystemInfo (WINMINOR, nvResult, svResult);
               
                if (nvResult < 10) then
                     szInfo = "OS: Windows 95";
                else
                     szInfo = "OS: Windows 98";
                endif;
        endswitch;
    endif;


Windows Me까지는 Windows9x로 인식한다~

2000이상은 NT로~


인스톨 쉴드로 운영체제를 선별해서 설치시 사용할수있다~

간단하게 컴포넌트 형태로 사용하는 방법이 있는지는 모르지만.. 일단 이게 확실하게되니..ㅎㅎ

2010/07/22 15:57 2010/07/22 15:57
Posted
Filed under Development/Python

Python Class


파이썬의 클래스는 c++의 클래스와는 다른점이 많다..
개념적으로 비슷한 부분도 있지만 다른 부분도 있다(아.. 정리안되..-ㅁ-;;)
아무튼..! 기본적 개념은 같다-_-;;


클래스 정의 및 인스턴스 객체 생성



클래스 정의 단계

>>> Class Simple:      # 헤더(header)
>>>   pass          # 몸체(body)

객체 생성 단계
>>> s1 = Simple()
>>> s2 = Simple()


※ 파이썬 클래스의 특징 : 동적으로 멤버변수를 선언할수 있다.


>>> s1.stack = []

>>> s1.stack.append(1)

>>> s1.stack.append(2)

>>> s1.stack.append(3)

>>> s1.stack

[1, 2, 3]

>>> s1.stack.pop()

3


* 클래스에서 맴버 함수 정의법

기존의 함수와 정의 하는 방법(def)은 갖지만 다른점은 첫 번째 인자로 자신을(self)을 준다는 것이다.


>>> class Myclass:

>>>   def set(self, v):

>>>     self.value = v

>>>   def put(self):

>>>     print self.value;


>>> c = Myclass()

>>> c.set('egg')

>>> c.put()

egg


위 코드는 다음 코드와 동일하다


>>> Myclass.set(c, 'egg')

>>> Myclass.put(c)

egg


메쏘드를 인스턴스 캑체를 이용하여 직접 호출할 때에는 첫 번째 인수인 self는 없다고 생각하면된다.

(기존의 다른언어에서 쓰던것 처럼)

이와같이 클래스 객체를 이용하여 메쏘드를 호출하는 것을 언바운드 클래스 메쏘드 호출 이라고 하고, 인스턴스를 통하여 자동으로 self인수를 전달하는 방식을 인스턴스 메쏘드 호출 이라고 한다.


* 클래스 내부에서의 메쏘드 호출


>>> class MyClass2:

>>>   def set(self, v):

>>>     self.value = v

>>>   def incr(self):

>>>     self.set(self.value + 1) # 내부 메쏘드 호출

>>>   def put(self):

>>>     print self.value


* 생성자와 소멸자

파이썬의 생성자는 __init__이고 소멸자는 __del__이다

(일반적으로 파이썬은 어떤 이름 앞뒤로 _가 두 개씩 붙어 있으면 예약어 이다)


from time import time, ctime, sleep


class Life:

  def __init__(self):

    self.birth = ctime()

    print 'Birthday', self.birth

  def __del__(self):

    mylife = life()

    print 'Sleeping for 3 sec'

    sleep(3)


test()


결과

Birthday Tue Aug 15 10:49:44 2000

Sleeping for 3 sec

Deatday Tue Aug 15 10:49:47 2000


* 연산자 중복(operator over loading)


class MyString:

  def __init__(self, str):

    self.str = str

  def __div__(self, sep):      # 나누기 연산자 /가 사용될때 호출되는 함수

    return self.str.split(sep)   # 문자열 self.str을 sep를 기준으로 분리


>>> m = MyString("abcdabcdabcd")

>>> print m / "b"            # 문자열을 ‘b’를 이용해서 리스트로 분리한다.

['a', 'cda', 'cda', 'cd']


>>> print m / "bc"           # 문자열을 “bc”를 이용해서 리스트로 분리한다.

['a', 'da', 'da', 'd]


수치 연산에 적용되는 주요 연산자는 __div__외에도 많이 있다

너무 많아서 기록 하지는 못한다는.. 책에서 참고~

2010/07/22 15:53 2010/07/22 15:53
Posted
Filed under Development/Python

* 대화 기능의 인터프리터 언어

Python은 객체지향을 강력히 지원하는 대화형 언어이다. 인터프리터 언어는
사용하기 쉽다. 코딩해서 컴파일하고 실행해서 에러를 고치는 일련의 작업을
할 필요가 없으며 작성하고 바로 테스트가 가능하다 Basic과 마찬가지로 대화형 모드로
수행할수도 있고 일반 프로그래밍 모드로도 가능하다~

* 동적인 데이터 타입 결정 지원

Python은 동적으로 데이터 타입을 결정 하므로 타입에 관계없이 일반적인 코드를
작성해서 쓸수 있다.

>>> def add(a, b):
             return a + b

>>> print add(3, 7)
10
>>> print ('kkk', 'jjj')
kkkjjj

요로코롬 함수 작성시에도 C++에서 처럼 Overloading을 고려하지 않아도 된다~
얼마나 편하지 않은가!

* 간단하고도 쉬운 문법
Python의 간단한 문법과 깔끔한 구문은 기존 프로그래머는 물론, 이제 프로그래머를
시작하는 초심자가 배우기 쉽고, 사용하기 쉽다. 어느정도 내공이 있는 프로그래머라면
하루만에 Python을 이용한 결과물을 낼 수가 있을 정도이다.
그러나 Tab을 이용한 코드 정리를 사용하기 불편한점이 있어서 조금 아쉬운 정도..?^^;

* 높은 확장성
Python을 일명 접착제 언어(glue language)라고도 한다. 다른 언어나
라이브러리에 쉽게 접근해 그들을 사용할수 있기 때문이다. 기존읜 C프로그램을
Python과 결합할 수 있다. 소스 없는 라이브러리도 랩퍼(wrapper) 함수(다른 라이브러리의
함수를 중간에서 호출해주는 간단한 인터페이스 함수)만 써주면 Python에서 사용할 수 있다~

* 무료
무엇보다... 역시 공짜라는게 가장 맘에 든다...(앗..! 내머리-ㅁ-)

이밖에도 Python은 많은 특징을 가지고 있다~ 많은수의 라이브러리, 확장 및 내장기능,
메모리 자동관리..등등 하긴... 어느 언어에 장점이 없는 언어가 어딨겠는가-_-;;
일단 장점만 보고 두근두근 하면 앞으로 나아갈 뿐이다~~~

2010/07/22 15:52 2010/07/22 15:52