kkuzil.own@gmail.com

Posted
Filed under Development/Delphi
단축키 우선 순위를 지정해줄 수 있다.


단축키가 먹지 않는 서드 파티의 단축키 등록 상태를 확인 후 맞게 지정되어 있다면...


메뉴 > Tools > Options > Editor Options > Key Mappings 에서

우측에 있는 "Enhancement modules:" 목록에서 원하는 서드파티를 선택 후 우선순위를 조절해 주면된다.
아래로 내릴 수록 우선 순위가 높다.


끝.
2018/11/14 22:50 2018/11/14 22:50
Posted
Filed under Development
가끔 프로그램 동작 또는 종료할대 아래와 같은 메시지 박스가 팝업된다.

사용자 삽입 이미지


이런 경우 끝까지 추적해서 오류의 원인을 파악하고 수정하는게 맞지만,
수정 할 수 없는 외부 모듈을 연동해서 사용하는 경우 고치지도 못하고.. 사용자에게 납득 시키기도 쉽지 않아서 곤란한 상황이 올때가 있다.

사용자 입장에선 이런 오류가 계속적으로 발생하면 DEP (데이터 실행 방지)를 해제해서 무시할 수 있지만...
개발자 입장에선 이런 문제가 발생하는 상황과 조건을 알고 어쩔 수 없이 놔둘 수 밖에 없는 상황이 온다면 사용자가 보기전에 알아서 치워야 한다...

이럴때 사용하는 API는 SetErrorMode()
SetErrorMode(SEM_NOGPFAULTERRORBOX);
요렇게 적어주면 끝.

자세한건 아래 링크
https://msdn.microsoft.com/en-us/library/windows/desktop/ms680621(v=vs.85).aspx

2017/02/03 15:45 2017/02/03 15:45
Posted
Filed under Development/C++

Visual C++ 2005 runtime files

* VC 8.0 (x86) - {A49F249F-0C91-497F-86DF-B2585E8E76B7}
* VC 8.0 (x64) - {6E8E85E8-CE4B-4FF5-91F7-04999C9FAE6A}
* VC 8.0 (ia64) - {03ED71EA-F531-4927-AABD-1C31BCE8E187}

Visual C++ 2005 SP1 runtime files

* VC 8.0 SP1 (x86) - {7299052B-02A4-4627-81F2-1818DA5D550D}
* VC 8.0 SP1 (x64) - {071C9B48-7C32-4621-A0AC-3F809523288F}
* VC 8.0 SP1 (ia64) - {0F8FB34E-675E-42ED-850B-29D98C2ECE08}

Visual C++ 2005 SP1 ATL Security Update runtime files

* VC 8.0 SP1 ATL Patch (x86) - {837B34E3-7C30-493C-8F6A-2B0F04E2912C}
* VC 8.0 SP1 ATL Patch (x64) - {6CE5BAE9-D3CA-4B99-891A-1DC6C118A5FC}
* VC 8.0 SP1 ATL Patch (ia64) - {85025851-A784-46D8-950D-05CB3CA43A13}

Visual C++ 2008 runtime files

* VC 9.0 (x86) - {FF66E9F6-83E7-3A3E-AF14-8DE9A809A6A4}
* VC 9.0 (x64) - {350AA351-21FA-3270-8B7A-835434E766AD}
* VC 9.0 (ia64) - {2B547B43-DB50-3139-9EBE-37D419E0F5FA}

Visual C++ 2008 SP1 runtime files

* VC 9.0 SP1 (x86) - {9A25302D-30C0-39D9-BD6F-21E6EC160475}
* VC 9.0 SP1 (x64) - {8220EEFE-38CD-377E-8595-13398D740ACE}
* VC 9.0 SP1 (ia64) - {5827ECE1-AEB0-328E-B813-6FC68622C1F9}

Visual C++ 2008 SP1 ATL Security Update runtime files

* VC 9.0 SP1 ATL (x86) - {1F1C2DFC-2D24-3E06-BCB8-725134ADF989}
* VC 9.0 SP1 ATL (x64) - {4B6C7001-C7D6-3710-913E-5BC23FCE91E6}
* VC 9.0 SP1 ATL (ia64) - {977AD349-C2A8-39DD-9273-285C08987C7B}


출처: http://del4u.tistory.com/58 [창조적 귀차니즘]
2017/01/11 09:19 2017/01/11 09:19
Posted
Filed under Development/Delphi
TScrollBox 에서는 기본적으로 마우스 휠이 적용이 안된다.
그래서 적용하는 방법은...

TScrollBox을 품고 있는 폼의 MouseWheel 이벤트에

  if WheelDelta >= 0 then
    SendMessage(scBox.Handle, WM_VSCROLL, SB_LINELEFT, 0)
  else
    SendMessage(scBox.Handle, WM_VSCROLL, SB_LINERIGHT, 0);
  Handled := True;

을 하면 되는데, 다른 컨트롤에 스크롤이 있는경우 모든 스크롤 이벤트를 가로체서 해당 컨트롤에 까지 닫지 않는다.

WindowFromPoint(p: TPoint) 를 이용해서 마우스 커서에 올려져 있는 컨트롤이 TScrollBox인지 스크롤 다른건지 확인해서 넘겨준다.

procedure TForm1.Form1MouseWheel(Sender: TObject;
  Shift: TShiftState; WheelDelta: Integer; MousePos: TPoint;
  var Handled: Boolean);
var
  h: HWND;
begin
  h := WindowFromPoint(MousePos);

  if (h <> vtProc.Handle) and (h <> vtList.Handle) then
    h := scBox.Handle;

  if WheelDelta >= 0 then
    SendMessage(h, WM_VSCROLL, SB_LINELEFT, 0)
  else
    SendMessage(h, WM_VSCROLL, SB_LINERIGHT, 0);
  Handled := True;
end;

이런식으로 폼 MouseWheel 이벤트에 추가해주면 장점이 있는데,
스크롤 할 컨트롤을 굳이 클릭해서 포커스를 주지 않아도 마우스 휠만으로 스크롤이 가능하다는 것이다.
 
끝.
2014/11/05 10:23 2014/11/05 10:23
Posted
Filed under Development/etc.
일반적으로 std C 스타일로 컴파일된 DLL 들은 DLL 뷰어(dllexp.exe)로 확인하면 아래와 같이 보이게 된다.
함수 형식은 보이지 않으며 함수 이름만 확인 할 수 있다.
사용자 삽입 이미지



하지만 VC++ 환경에서 C++ 스타일로 컴파일을한 DLL들을 아래처럼 함수 원형까지 확인할 수 있게 되는데..
이렇게 보이는 함수들은 VC++가 아닌 다른 개발언어에서 함수 어드레스를 "함수 이름"으로 불러 올수 없다..
사용자 삽입 이미지


그래도 사용할  수 있는 방법은... 아래와 같다.
DLL 뷰어 (dllexp.exe)를 실행한 후 "Undecorate C++ function names"를 체크해제

사용자 삽입 이미지


체크를 해제 하고 DLL을 불러오면 함수이름이 다르게 나오는걸 확인 할 수 있다.

이렇게 나오는 함수이름을 통해서 사용하면 된다.
예) FunTest = GetProcAddress(hDll, "?test_lib@@YAHXZ");


개발 코드상 보기에는 좋지 않다는.. 그래도 쓸수 있는게 어디겠냐만은..

사용자 삽입 이미지
2014/06/23 14:26 2014/06/23 14:26