혹시 써먹을 일 있나.. 싶어서 뚝딱 만들었음 ㅎㅎ

뿌리는 김에 내 어플 광고도 ㅎㅎ

다운 받으실 분들은 받으시고~

공부하실 분들은.. 뭐 너무 간단하지만 보시고 ㅋㅋ


아래 코드요~






 





또 다른 인기 어플! 겁나 그럭저럭 어려운 퍼즐!

Gem Master! The most difficult puzzle!


다운로드 :  http://itunes.apple.com/us/app/gem-master!-lite/id499444540?mt=8
Posted by ParkPill 박필

댓글을 달아 주세요

  1. 김씨샵 2012.05.24 09:13  댓글주소  수정/삭제  댓글쓰기

    소스 이게 끝인가요? using은 안하나요? ㅜㅜ


 음.. 안된다. 하지 말길 바란다. ㅡ.ㅡ;

엑셀을 깔아야 .Net에서 쓸 수 가 있다.

그냥 우리 .csv 쓰자.

혹시 설마 이게 뭔지 모르는 사람을 위해 간단히 설명하자면

이름,나이,잘생김정도,키
박필,29,Very Good,174
랑케,29,Good,178
풍생,29,Good,182

이렇게  FileStream으로 걍 쓰면 된다.




엑셀이 깔린 PC인데 되지 않는 경우는 아래의 링크를 참조 바람.

은하의 신나는 개발이야기




혹시나 또 설마 FileStream 공부하기 귀찮은 분들을 위해 이것마저 링크 걸어드립니다.

GhostSheep's Blog 
Posted by ParkPill 박필

댓글을 달아 주세요

  1. BlogIcon 은하비류연 2011.12.19 15:33 신고  댓글주소  수정/삭제  댓글쓰기

    유입경로 보다가 들렀습니다.

    작성하신 포스트에 한가지 덧붙임 하자면, 엑셀 어플리케이션이 설치되어있지 않은 PC에서도

    엑셀 파일의 읽기, 쓰기는 가능합니다. oleDb를 통해서 접근하면 되지요.

    몇가지 부차적인 문제점이 있긴하지만요. 좋은 하루 되세요!

  2. BlogIcon nike free 2013.07.15 15:59  댓글주소  수정/삭제  댓글쓰기

    당신은 내가사랑할 만한 사람이 아니예요,사랑하지 않으면 안될 사람이예요.


Here it is!

tbCurrentData.Select(tbCurrentData.Text.Length, 0);

in fact,   it is all in MSDN :p

Have a good day~ 
Posted by ParkPill 박필

댓글을 달아 주세요


DataGridView의 Row Header의 왼쪽에 까만 삼각형이 있다. 짱나게.. -_-;

없애는 법! 있긴 있다 ㅎㅎ

RowHeaderDefaultCellStyle 에서 Padding 에 한 100 쯤 넣어서 타이틀을 다 Header 밖으로 다 보내버리고
(만약 RowHeader에 넣을 Text가 없다면 위의 방법으로 이미 해결이 되었을 터이다)

RowPostPaint이벤트를 사용하여 따로 그리면 된다. 아래처럼 ㅎㅎ

object o = dgvTable.Rows[e.RowIndex].HeaderCell.Value;

            if(o != null && !string.IsNullOrEmpty(o.ToString()))
            {
                e.Graphics.DrawString(o.ToString(), dgvTable.Font, 
                                      Brushes.Black, 
                                      new PointF((float)e.RowBounds.Left + 2, 
                                      (float)e.RowBounds.Top + 4));
            }

 아;; 참 별로다.

위의 방법으로는 긴 TEXT는 Cell 의 영역까지 침범해버린다.

결국 RowHeader의 크기를 알아낸다음 같은 크기의 Bitmap을 만들고 그 안에 잘 정렬해서 String을 그린 후

이미지를 RowHeader의 (0, 0)에 그리는 수 밖에 없다.

다시 한 번 말하지만 참.. 별로다;;

 
Posted by ParkPill 박필

댓글을 달아 주세요

  1. BlogIcon GHd 2013.07.15 10:14  댓글주소  수정/삭제  댓글쓰기

    희미한 달빛이 샘물 위에 떠있으면,나는 너를 생각한다.

 아.. 귀찮다. ㅡㅡ;

필요한 클래스는 세가지.

MarshalByRefObject를 상속하는 Class. 이 놈이 Server에서도 쓰이고 Client에서도 쓰인다.
RemoteObject : MarshalByRefObject

Server클래스에서는 아래 두 줄만 추가해주면 된다.

ChannelServices.RegisterChannel(new TcpChan());
RemotingConfiguration.RegisterWellKnownServiceType(typeof(RemoteObject), "TESTUri", WellKnownObjectMode.Singleton);

Client측에서는 아래 두 줄만 추가해주면 된다.

ChannelServices.RegisterChannel(new TcpChannel());
RemoteObject _rmtObject = (RemoteObject)Activator.GetObject(typeof(RemoteObject), "tcp://127.0.0.1:9999/TESTUri");


더 이상의 설명은 귀찮다. ㅡㅡ;
필요하면 아래 코드 다운받아 쓰시도록ㅎㅎ

물론 위의 방법은
Single Call, Singleton, Client Activated Object 중 Singleton이며

Code와 Configuration 방법 중 Code에 해당한다.

더 궁금한 사항이 있다면 아래의 글을 참조바란다. 아주 쥑이게 정리 잘 해놨다.

http://hoons.kr/Board.aspx?Name=cshaptip&Mode=2&BoardIdx=469&Key=&Value=



Posted by ParkPill 박필

댓글을 달아 주세요





오토마타.

얼마전 string pad 한글 지원을 위해 찾아본 오토마타.

알고리즘과 같은 어떤 개념 같았는데 영 공부하기가 귀찮아서
 
아래 유니코드 한글 코드표를 보고 알고리즘을 만들어 버렸다.


LibHangul 이라는 오픈 소스도 찾았으나 사용법을 배우기 귀찮아서

역시 그냥 만들어 버렸다.


혹, 만들기가 더 귀찮거나 남이 만든거 공부해서 사용하는게 편한 사람은

받아가셔요~


그리고 역시 내가 나중에 쓸 수도 있기에 백업삼아 올려놓는다 ㅋㅋ

수고요~



- 유니코드 자모값의 코드표 : http://www.unicode.org/charts/PDF/U1100.pdf
- 유니코드 완성형 한글 코드표 : http://www.unicode.org/charts/PDF/UAC00.pdf


 

Posted by ParkPill 박필

댓글을 달아 주세요

  1. BlogIcon ghd 2013.07.14 02:29  댓글주소  수정/삭제  댓글쓰기

    좋으면 좋고 싫으면 싫은 거지, 뭐가 이렇게 어렵고 복잡하냐구

  2. 방문자 2016.02.11 02:56  댓글주소  수정/삭제  댓글쓰기

    사용법이 어떻게 되는지 알 수 있을까요..? 2010버전에서 프로젝트가 안열리네요..


짧고 굵게 설명 들어간다.

 - const -
 const는 선언시 값이 할당되어야 한다.
 한 번 할당하면 바꿀 수 없는 '상수'인 것이다.
 private const int HEIGHT_OF_TOOL = 72;



 - readonly -
 readonly는 생성자에서 한 번 더 할당할 수 있다.
생성자가 오버로드 되면 값을 때에 따라 값을 달리 할 수 있는 것이다.
그래서인지 선언시 값을 할당하지 않아도 된다.
 private readonly int HEIGHT_OF_TOOL;

public ToolManager()
{
HEIGHT_OF_TOOL = 10;
}

public ToolManager(int height)
{
HEIGHT_OF_TOOL = height;
}

 
마지막으로 한 가지 덧붙이자면,

const는 static이다.

readonly는 아니다. 하지만 앞에 static 써주면 그만이다. ㅡㅡ;

그래서! readonly가 좋다.


아직도 이유가 애매한가?

readonly는 const가 할 수 있는 모든 일을 하면서

확장성을 가지고 있다는 말이다. C#에까지 와서 굳이 const를 쓸 일이 무어란 말인가.


Posted by ParkPill 박필

댓글을 달아 주세요

  1. BlogIcon 요원009 2016.10.31 13:44 신고  댓글주소  수정/삭제  댓글쓰기

    switch case 문에서는 readonly string을 허용하지 않습니다.
    저도 일반적으론 readonly를 써왔었는데, 그냥 const를 사용하는 편이 낫겠더라고요.


보통 C#에서 Application.StartupPath 로 프로그램 시작 폴더를 얻어오는데 WPF에서는 Library가 달라서 불가능!

하지만 불가능이 어디있겠습니까? 당신이 솔로를 탈출하는 것만 빼면 말이죠.

아, 저도 솔로입니다. ㅋㅋ

... 아래와 같습니다!!

using System.Diagnostics;

...

string _configPath = System.IO.Path.GetDirectoryName(Process.GetCurrentProcess().MainModule.FileName) + "\\LaunchingConfig.xml";



Process에 등록된 프로그램의 실행파일 경로를 가져오는 듯 보입니다. ㅋㅋ

그럼 수고들하시게요~
Posted by ParkPill 박필

댓글을 달아 주세요


C#에서의 윈도우 이동과 다를 바 없다. 다만 한 가지 다른 점이 있다면,

Handle을 가져오는 방법이다.

new System.Windows.Interop.WindowInteropHelper(this).Handle

요정도 해줘야 핸들이 따라온다 ㅎㅎ

나머진 C#과 동일하므로 생략!!

모르면 같다 붙여보고, 컴파일해보고, 머 그러다보면 알게 되고 ㅎㅎ 수고요~



[DllImportAttribute("user32.dll")]
public static extern int SendMessage(IntPtr hWnd, int Msg, int wParam, int lParam);
[DllImportAttribute("user32.dll")]
public static extern bool ReleaseCapture();
public const int HT_CAPTION = 0x02;
public const int WM_NCLBUTTONDOWN = 0xA1;

protected override void
OnMouseDown(System.Windows.Input.MouseButtonEventArgs e){

            ReleaseCapture();
            SendMessage(new System.Windows.Interop.WindowInteropHelper(this).Handle, WM_NCLBUTTONDOWN, HT_CAPTION, 0);
}

Posted by ParkPill 박필

댓글을 달아 주세요


Graphics g = Graphics.FromHwnd(new System.Windows.Interop.WindowInteropHelper(this).Handle);

뭐 다른 설명 필요하신 분? ㅋㅋ

C# 에서 CreateGraphics() 이 WPF에 없습니다! 그래서 혹시나 필요하신 분들은 요놈을 쓰시면 됩니다.

어지간하면 Blend에서 다 가능하지만 또 고집스러운 사람들(나... ㅋㅋ)이 있기에 올려봅니다. ㅋㅋ

Posted by ParkPill 박필

댓글을 달아 주세요