블로그 이미지
Every unexpected event is a path to learning for you. blueasa

카테고리

분류 전체보기 (2861)
Unity3D (899)
Programming (479)
Server (33)
Unreal (4)
Gamebryo (56)
Tip & Tech (192)
협업 (65)
3DS Max (3)
Game (12)
Utility (142)
Etc (99)
Link (34)
Portfolio (19)
Subject (90)
iOS,OSX (53)
Android (16)
Linux (5)
잉여 프로젝트 (2)
게임이야기 (3)
Memories (20)
Interest (38)
Thinking (38)
한글 (30)
PaperCraft (5)
Animation (408)
Wallpaper (2)
재테크 (19)
Exercise (3)
나만의 맛집 (3)
냥이 (10)
육아 (16)
Total
Today
Yesterday

Form 에서 다른 Form 을 생성하는 경우 작업표시줄에도 표시되고 Alt+Tab을 누르면 나오는 화면에도 나옵니다.

이것을 없애는 방법이 여러가지 있습니다.

ShowDialog() 로 호출하는 방법도 있고, FormBorderStyle을 FixedToolWindow 또는 SizableToolWindow 로 지정하면 Alt+Tab 화면에 보이지 않습니다. 하지만 이 방법들은 무언가 꺼림찍하죠?

다들 특정한 목적으로 쓰도록 만든 것이기 때문에 일반 폼에 적용하기는 무리가 있습니다.

제가 만드는 App의 경우에는 FormBorderStyle을 None으로 설정하고, 소유하는 폼에도 접근해서 작업을 하도록 만들었기 때문에 위의 방법을 쓸 수가 없더군요

 

그래서 열심히 구굴링을 해서 찾아낸 방법!

        protected override CreateParams CreateParams
        {
            get
            {
                // Turn on WS_EX_TOOLWINDOW style bit
                CreateParams cp = base.CreateParams;
                cp.ExStyle |= 0x80;
                return cp;
            }

         }

이 코드를 Form의 클래스에 넣기만 하면 Alt+Tab을 눌러도 보이지 않습니다.
보니까 어떤 속성을 오버라이드 해서 ToolWindow 속성을 부여하는 것 같습니다. 정확한지는 저도 잘 ^^;

 

출처: http://www.csharp411.com/hide-form-from-alttab/

반응형
Posted by blueasa
, |

Form.Location 이라는 속성을 이용해서 창의 위치를 결정할 수 있습니다.
그리고 Form.Show() 라는 메써드를 이용해서 창을 보여줄 수 있습니다.
그렇다면!!
위치를 지정하고 그 위치에 창을 띄울 수 있을 것 같은데... 어라? 잘 안됩니다 ㅡㅡ;
일단 Show() 메써드를 사용한 후에는 Location 속성을 이용해서 창이 잘 움직이는데 처음 시작할 때는 잘 안되는군요~
Show() 메써드를 실행하기 전에 지정한 Location 속성은 Form의 위치에 영향을 주지 못하는 것 같습니다.

이럴 때!!
Form.StartPosition 속성을 이용합니다.
오호라! 시작 위치를 지정할 수 있을 것 같은 속성 이름이군요!

Form.StartPosition 속성은 Point 객체가 아니고 FormStartPosition 이라는 열거형입니다.
그렇다면 어떻게 처음 위치를 지정할까요?

Form.StartPosition = FormStartPosition.Manual; //이렇게 지정해 주면 Location을 시작 위치로 사용합니다.
이 방법을 사용하면 Form을 원하는 위치에 띄울 수 있겠죠? ^^

form1.StartPosition = FormStartPosition.Manual;
form1.Location = new Point(10,10);
form1.Show();


이렇게요~ 참 쉽죠?

반응형
Posted by blueasa
, |

사용자 삽입 이미지
입력 배열 :

        string[] parentString = { "son1", "son2", "son3", "son4" };
        string[] childString = { "byoung1", "byoung2", "byoung3" };

입력방법 #1

        private void button1_Click(object sender, EventArgs e)
        {
            treeView1.Nodes.Clear();
            treeView1.BeginUpdate();

            foreach (string str in parentString)
            {
                TreeNode tn = treeView1.Nodes.Add(str);

                foreach (string substr in childString)
                {
                    tn.Nodes.Add(substr);
                }
            }

            treeView1.EndUpdate();
        }

입력방법 #2

        private void button2_Click(object sender, EventArgs e)
        {
            treeView1.Nodes.Clear();
            treeView1.BeginUpdate();

            foreach (string str in parentString)
            {
                treeView1.Nodes.Add(str);
            }

            foreach (TreeNode tn in treeView1.Nodes)
            {
                foreach (string substr in childString)
                {
                    tn.Nodes.Add(substr);
                }
            }

            treeView1.EndUpdate();
        }

입력방법 #3

        private void button3_Click(object sender, EventArgs e)
        {
            treeView1.Nodes.Clear();
            treeView1.BeginUpdate();

            TreeNode tn = new TreeNode();
            foreach (string str in childString)
            {
                tn.Nodes.Add(str);
            }

            foreach (string str in parentString)
            {
                TreeNode tnParent = treeView1.Nodes.Add(str);
            }

            treeView1.EndUpdate();
        }



출처 : http://www.iamgsi.com/entry/C-TreeView-내용-추가하기
반응형
Posted by blueasa
, |
C++ 에서 FILE 를 사용해서 데이터를 바이너리로 저장 했다면 C#에서 어떻게 읽어야 할까?.

C#을 배우는 상태에서 C++ 과의 파일 연동 문제가 고민이 되었다.
사실 모르니 궁금증이 생긴 거지만 몇가지 테스트를 하다 보니 바이너리 데이터는 BinaryReader 로 읽을수 있었다.

해당 파일을 읽을때 FileInfo를 사용해서 오픈 한 다음에 BinaryReader로 읽을 수 있다.
FileInfo fi = new FileInfo(@"D:\Testbinary.dat");
BinaryReader br = new BinaryReader(fi.OpenRead());

C++ 에서 아래 데이터를 저장했습니다.
FILE* fp = fopen(path, "wb");
int data0 = 100;
float data1 = 100.123f;
char buf0[128] = "son byoung uk";
fwrite(&data0, sizeof(int), 1, fp);
fwrite(buf0, 128, 1, fp);
fwrite(&data1, sizeof(float), 1, fp);
fclose(fp);

C# 에서 아래와 같이 데이터를 읽었습니다.
int data0;
float data1;
char[] buf0;
string buf1; data0 = br.ReadInt32();
buf0 = br.ReadChars(128);
buf1 = new string(buf0);
data1 = br.ReadSingle();

위의 내용을 아래와 같이 정리해봤습니다.

C++

C#

int

br.ReadInt32()

float

br.ReadSingle()

double

br.ReadDouble()

char[]

string a = new string(br.ReadChars(128))



출처 : http://www.iamgsi.com/?page=35
반응형

'Programming > C#' 카테고리의 다른 글

Form을 원하는 위치에 띄우자!  (0) 2010.07.14
TreeView 내용 추가하기  (2) 2010.07.14
윈폼에서 단축키 개발하기  (0) 2010.07.13
Windows Forms Application  (2) 2010.07.07
PointToClient 와 PointToScreen  (0) 2010.07.07
Posted by blueasa
, |

Metacognition

Etc / 2010. 7. 13. 20:18
- 초인지
- 인간 자신의 인식에 대해 아는 것

- 사고하는 것을 사고하는 것

 - 자신의 학습과정 혹은 인지 과정을 계획하고, 모니터하고, 평가하는 일련의 행위

 

 아직 의견이 분분하지만 , 초등학교 아동도 상당한 수준의 메타인지 기능을 가지고 있다고 한다.

다만 초등학교 시기의 2/3 가량이 구체적 조작기에 속하는 발달 특성상, 개발과 발달에 어려움은 있다.

메타인지 기능은 나이가 들면 저절로 키가 크고 몸무게가 느는 것처럼 자연스럽게 발달하는 것이 아니라 개발해야 하는 기능이므로 , 어린 시기에 메타인지 기능이 충분히 습득될 수 있도록 도와주어야 한다.

 

 메타인지 기능의 개발은 비단 형식적 교육기에 속하는 학생들에게만 중요한 것이 아니다. 평생학습사회라고 일컬어지는 이 시대를 살아가는 데 있어서, 더구나 정보가 넘쳐나고 알아야 할 것이 많은 이 시기에 성인들도 효율적인 학습을 위해서 반드시 습득해야 하는 기능이다.

 

 메타인지와 관련한 연구들은 여러 분야와 관련이 있는데 ,교과 영역에서는 주로 읽기학습, 수학교과의 문제해결, 과학영역에서 전문가와 초보자의 실험 등을 통한 문제해결 등에서 연구되어졌다.

또 일반적인 문제해결력, 비판적 사고능력, 반성적 사고 등도 메타인지와 관련있는 사고기능이다.

[출처] metacognition|작성자 소리

반응형

'Etc' 카테고리의 다른 글

How To Be A Programmer  (0) 2010.08.23
프로세스 선호도 관련 API 함수  (0) 2010.07.20
창의성의 아이러니  (0) 2010.07.13
노래혼(Utatama) 삽입곡 Oh My Little Girl  (0) 2010.06.02
[펌] 특수문자,수학기호 읽는법  (1) 2010.05.14
Posted by blueasa
, |

창의성의 아이러니

Etc / 2010. 7. 13. 20:08
반응형

'Etc' 카테고리의 다른 글

프로세스 선호도 관련 API 함수  (0) 2010.07.20
Metacognition  (0) 2010.07.13
노래혼(Utatama) 삽입곡 Oh My Little Girl  (0) 2010.06.02
[펌] 특수문자,수학기호 읽는법  (1) 2010.05.14
Source Insight 간단한 실행방법  (0) 2010.05.14
Posted by blueasa
, |

윈폼(via C#)으로 각종 툴, 어플리케이션을 만들 때 유저키덕후들을 위한 단축키가 필요할 수 있다. 마우스라는 혁신적인 입력 장치가 있더라도 숙련되면 키보드 이상가기 힘드니까 :)
언뜻 생각하기에는 System.Windows.Forms.Form 클래스에서 KeyDown 이벤트를 잡아서 처리를 하면 될 것 같아 해보았지만, 동작하지 않는다 ㅇㅂㅇ;;
Google신(MS는 Bing신...)에 문의 결과 ProcessCmdKey 메소드를 오버라이드 한다면 된다고 한다. 간단히 해보면 다음과 같다.
protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
        if (!base.ProcessCmdKey(ref msg, keyData)) // 위에서 처리 안했으면
        {
                // 여기에 처리코드를 넣는다.
                if (keyData.Equals(Keys.F1))
                {
                        // 대충 이런 식으로 처리한다.
                        return true;
                }
                else
                {
                        return false;
                }
        }
        else
        {
                return true;
        }
}


위 코드에서 return false; 의 의미는 내가 처리를 안했으니 혹시나 자식 클래스에서 오버라이드 할꺼면 밑에서 처리해라~ 라는 의미이다. 반대로 return true; 는 밑에서 처리하지 말라는 소리다. 마찬가지로  base.ProcessCmdKey가 거짓일 때만 처리하는 것도 부모 클래스에서 키입력에 대해서 처리를 했다면 처리를 하지 않는다는 의미이다.

아무튼, 이리하여 간단히 단축키를 구현할 수 있다.


출처 : http://zeru.kr/blog/539
반응형

'Programming > C#' 카테고리의 다른 글

TreeView 내용 추가하기  (2) 2010.07.14
C++ 바이너리(Binary) 데이터를 C# BinaryReader 로 읽기.  (0) 2010.07.14
Windows Forms Application  (2) 2010.07.07
PointToClient 와 PointToScreen  (0) 2010.07.07
단축키 만들기 with C#  (1) 2010.07.07
Posted by blueasa
, |

TCHAR printf

Programming/C/C++ / 2010. 7. 12. 13:59
#include<windows.h> //TEXT()
#include<tchar.h> //TCHAR, _stprintf(), _tprintf()

TCHAR test[32];

_stprintf(test, TEXT("%f"), 0.01f); //_UNICODE가 선언되면 swprintf(), _MBCS선언되면 sprintf()
_tprintf(TEXT("%s\n"), test); //_UNICODE가 선언되면 printf(), _MBCS선언되면 printf()

입니다, TCHAR, _stprintf(), _tprintf() 전부 메크로죠, _UNICODE나 _MBCS가 선언되면, 어느게 선언되있는 가에 따라서 자동으로 선택해줌니다, TCHAR는 _UNICODE가 선언되면 wchar_t고, _MBCS선언되면 char입니다.

http://msdn.microsoft.com/en-au/library/tsbaswba.aspx


출처 : http://www.winapi.co.kr/ApiBoard/content.php?pk=54186&table=tblqa
반응형

'Programming > C/C++' 카테고리의 다른 글

TLS (Thread Local Strorage)  (0) 2010.08.30
TCHAR을쓰면 바뀌는 함수들  (0) 2010.07.27
A * pA = new B 과 B * pB = new B의 차이점.  (0) 2010.06.21
__super C++ 키워드  (0) 2010.06.03
[펌] assert 문 사용하기  (0) 2010.05.13
Posted by blueasa
, |

Wallpaper

Wallpaper / 2010. 7. 11. 23:56
반응형

'Wallpaper' 카테고리의 다른 글

동방 프로젝트 듀얼모니터용 바탕화면  (0) 2013.08.29
Posted by blueasa
, |


학원에서 강사님이 썼던 유한 상태기계 패턴를 정리해본다.

디자인패턴은 한눈에 볼수 있는게 좋아보여서 UML로 만들어 보았다.

강사님은 이 패턴으로 손쉽게 게임의 Scene를 바꾸는것에 썼다.

내가 이걸 았았다면 졸업작품때 만든 게임을 좀더 좋게 만들었을수도 있다는 생각이 든다.

 

여기서 추가로 볼것은 씬을 저장할때 Map를 이용했는데 이때 저장할때  쓰는  키값을 unsigned int 로 바꿔서 하는 것(해싱맵) 과 시간 프레임 클래스인 CFrameRate클래스를 추가적으로 보면 좋을것 같다.

 

 

main에서는 CSceneMgr 객체를 생성한후 사용할 씬(Cscene클래스를 상속받은) 클래스를 AddScene()함수로 CSceneMgr에 등록한후 ChangeScene()함수로 실행할 씬를 선택한다

그리루프에서는 Do()실행시키면 ChangeScene()에 의해 선택된 클래스의 것이 실행된다. 

반응형

'Programming > Design Pattern' 카테고리의 다른 글

C# 디자인패턴  (0) 2010.12.15
Dependency를 관리하는 방법  (0) 2010.10.21
Design Pattern Examples in C#  (0) 2010.07.23
GoF의 디자인패턴  (0) 2010.07.23
GoF Design Pattern 요약  (0) 2010.05.31
Posted by blueasa
, |