한나씨의 딴짓거리
by ILLIFE
<오라클> 오라클의 설치와 삭제

Install - 다음 - 경로:C:\oracle\ora92 - 다음 - ⊙ Oracle9i Databse 9.2.0.1.0(제품언어 : 기본) - 다음
     └>$ORACLE_HOME
  ⊙E nterprise Edition - 일반적인 목적 - 포트번호 : 2030 - 다음 -
  전역데이터베이스이름 : ora9210 - 데이터베이스파일디렉토리 : C:\oracle\oradata - 다음
  ⊙ 기본문자집합사용 -  다음 - 설치

  sys : oracle
  system : oracle
  -> 종료 -> 다음 설치 하지 않는다.


--------------------------------------------------

 

#Oracle 완전 삭제
- 반드시 순서 지킬 것!

- 삭제가 제대로 이루어 지지 않으면, Oracle 재설치 안된다.
(1) [시작]-[Oracle installation Products ]-
     [Universal installer - 제품설치 해제 - 제품 다 체크하고제거 버튼 클릭] - [설치된 제품] - [삭제]

(2) 레지스트리 수정
   <시작>-<실행>-regedit
   - HKEY_Local_Machine\software\Oracle폴더 통째 삭제.
   - HKEY_Local_Machine\system\ControlSet001\Oracle 관련서비스(폴더) 삭제
           \ControlSet002\Oracle 관련서비스 삭제
                                   \CurrentControlSet\Oracle 관련서비스 삭제
     => Oracle 관련 값은 모두 제거해야 한다.
(3) Reboot
(4) <탐색기>
 - 물리적 파일 제거
 -설치 파티션 \Oracle폴더
 -부트 파티션 \Program files\Oracle폴더

by ILLIFE | 2007/02/06 16:01 | study-life | 트랙백 | 덧글(0)
<MFC>초보자의 완전삽질 GetCursorPos()

void CMFC_keyView::OnLButtonDown(UINT nFlags, CPoint point)
{
 // TODO: Add your message handler code here and/or call default
 GetCursorPos(&m_ptNow); = point;
 Invalidate();
 CView::OnLButtonDown(nFlags, point);
}

이렇게 한번 해보세요
원하는 위치를 표현하지 않는답니다
하하하하하하하


void CMFC_keyView::OnLButtonDown(UINT nFlags, CPoint point)
{
 // TODO: Add your message handler code here and/or call default
 m_ptNow = point;
 Invalidate();
 CView::OnLButtonDown(nFlags, point);
}


이렇게 해야 맞는 표현이지요;;;;;;
 
by ILLIFE | 2007/01/03 23:15 | error-report | 트랙백 | 덧글(0)
멀티스레드


멀티스레드란?
하나의 창에서 두 개 이상의 작업을 동시에 하는 것

창을 세 개 띄우는 것이 아니었어~(_-_)~



--------------------Configuration: Multi_T - Win32 Debug--------------------
Compiling...
Multi_T.c
c:\program files\microsoft visual studio\myprojects\multi_t\multi_t.c(122) : warning C4013: '_beginthread' undefined; assuming extern returning int
Linking...
Multi_T.obj : error LNK2001: unresolved external symbol __beginthread
Debug/Multi_T.exe : fatal error LNK1120: 1 unresolved externals
Error executing link.exe.

Multi_T.exe - 2 error(s), 1 warning(s)



위의 문제를 해결하려면
소스파일 오른클릭 -> project setting 대화상자의 설정을 변경해야한다
C/C++탭을 선택하고, Category 콤보박스에서 'Code Generation' 을 선택한다
'Use run-time library' 콤보박스에는 'Single-Threaded' 혹은 'Debug Single-Threaded'를
'Multithreaded' 또는 'Debug Multithreaded'로 변경한다



후아-_- 속았어!!!!!!!!!!



by ILLIFE | 2006/12/21 20:13 | error-report | 트랙백 | 덧글(0)
<JAVA> Polymorphism 테스트
; 다형성

class polytest

{
 public static void main(String[] args)
 {
  System.out.println("Hello World!");
  osk sk=new osk2();
  sk.os();
 }
}

class osk
{
 void os(){
  System.out.println("사각형");
 }
};

class osk2 extends osk
{
 void os(){
 System.out.println("삼각형");
 }
};

출력은
Hello World!
삼각형

by ILLIFE | 2006/12/19 17:30 | 트랙백 | 덧글(1)
MFC에서의 Subclassing 방법
MFC의 경우, 가상함수(virtual function)를 이용해서 이 Subclassing을 자동으로 처리해 주고 있다. 즉, 사용자가 어떤 객체 클래스에서 파생하여 다른 클래스를 만들어 내었다면 이것이 바로 Subclassing이 되고 있는 것이다.

그런데, 이 클래스를 이용해서 객체를 생성하는 것이 아니고, 이미 존재하고 있는 다른 클래스의 객체를 이 클래스로 바꾸어 줄려면, 메시지 처리함수를 교체 해주는 과정을 거쳐야 한다. 이러한 기능을 해주는 함수가 CWnd::SubclassWindow()함수이고, 이 함수를 사용해서 구현된 편리한 함수로 CWnd::SubclassDlgItem()이 있다. 그러나, 이 함수들을 사용하는 방법은 MFC 2.x와 MFC 4.x에서 각각 다르다. 또한, 서브클래스된 상태를 해제하기 위한 함수가 필요한데, MFC 4.x에서는 CWnd::UnsubclassWindow()라는 함수가 존재한다. 그러면, 각각의 사용법에 대해서 보기로 하자.


[MFC 4.x]

새로운 클래스의 객체를 아래와 같이 선언하고, 바꾸고자 하는, 이미 존재하는 창의 핸들이나 ID를 가지고 서브클래싱을 해주면 된다.
    CNewClassWnd     m_wndNewWnd;
    m_wndNewWnd.SubclassWindow(m_pOriginalWnd);
또는
    m_wndNewWnd.SubclassDlgItem(ID_ORIGINAL_WND);
그리고, 서브클래싱을 해제할 때는,
    m_wndNewWnd.UnsubclassWindow()와 같이 불러 주면 된다.


[MFC 2.x]

MFC 4.x의 경우, MFC 2.x의 복잡함을 줄이기 위해서 단순하게 고쳤다고 볼 수가 있다. 원래, MFC 2.x에서는CWnd::GetSuperWndProcAddr()함수를 구현해 주어야 하고, CWnd::UnsubclassWindow()함수가 존재하지 않는다. 여기에서, CWnd::GetSuperWndProcAddr()란 Subclassing을 할 때, 원래 메시지처리함수의 포인터를 저장하기 위한 장소를 알아내기 위해서 MFC가 부르는 함수이다. 그래서, 우리는 이 함수를 이용해서 그 포인터를 저장할 변수의 주소를 알려 주면 된다. 이 함수를 구현하는 것은 아래와 같다.

① 우선, 헤더파일에서 함수와 메시지처리함수의 포인터를 저장할 장소를 선언을 한다.
     static     WNDPROC     m_lpSuperWndProc;
     virtual WNDPROC* GetSuperWndProcAddr();

② 정적변수로 선언을 했으므로, 프로그램파일에서 다시 선언해주고, 함수를 아래와 같이 선언해 준다.
     WNDPROC CNewWnd::m_lpSuperWndProc;
     WNDPROC* CNewWnd::GetSuperWndProcAddr() { return &m_lpSuperWndProc; }


위와 같이, 이 함수는 단순히 포인터를 저장할 변수의 포인터를 넘겨주는 역할만을 한다. 그러므로, 이러한 함수가 MFC 4.x에서는 사라지는 것이 당연하게 보인다.그리고, 생성자에서 이 변수를 NULL로 초기화 시켜 주어도 좋다.


그러면, 이제 UnsubclassWindow()함수를 구현해 보자. 이 함수는 컨트롤을 고치기 위한 목적으로는 별로 쓸 일이 없지만, 일반적인 창을 고치거나 할 때는 사용자의 요구에 따라서 창을 원래의 클래스로 바꾸어 줄 경우도 있기 때문에 꼭 필요하게 된다. 이 함수는 Subclassing과정을 거꾸로 구현해 주면 된다.
    void CNewWnd::UnsubclassWindow() { WNDPROC* lpfnCurrentFn; lpfnCurrentFn = GetSuperWndProcAddr(); ::SetWindowLong(m_hWnd, GWL_WNDPROC, (DWORD)(* lpfnCurrentFn)); return; }
by ILLIFE | 2006/12/19 17:09 | study-life | 트랙백 | 덧글(0)
< 이전페이지 다음페이지 >


카테고리
이전블로그
이글루링크
최근 등록된 덧글
overriding이랑랑 차이..
by ILLIFE at 12/19
저도 네크워크 공부를 ..
by 리눅서 at 12/13
블로그 개설 ㅊㅋㅊㅋ 종..
by 배고픈듯 at 11/27
rss

skin by 소로진