S_OK : 때때로 Boolean TRUE 값(0X0)으로 S_FALSE와 함께 사용되며 함수가 성공하였음을 의미한다. 

NOERROR : S_OK와 동일한 의미이다. 
S_FALSE : S_OK와 반대로 Boolean FALSE 값(0X1)으로 함수가 실폐하였음을 의미한다. 
E_UNEXPRCTED : 치명적인 실패를 의미한다. 
E_NOTIMPL : 멤버 함수에 구현 코드가 포함되어 있지 않다. 
E_OUTOFMEMORY : 필요한 메모리를 할당할 수 없음 
E_INVALIDARG : 하나 혹은 그 이상의 인자가 타당하지 않음 
E_NOINTERFACE : 요청한 인터페이스를 지원하지 않음 
E_POINTER : 타당하지 않은 포인터 
E_HANDLE : 타당하지 않은 처리 
E_ABORT : 작동 중지 
E_FAIL : 특정하지 않은 실패 
E_ACCESSDENIED : 일반적 접근이 금지된 에러


출처: http://skmagic.tistory.com/entry/API-HRESULT와-LRESULT 

'프로그래밍 > MFC' 카테고리의 다른 글

MFC CompareNoCase  (0) 2017.07.17
MFC CMap GetStartPosition, GetNextAssoc  (0) 2017.07.17
MFC ListControl 한개 이상 선택하기  (0) 2017.06.23
MFC 컨트롤 변수화 하기  (0) 2017.06.22
MFC DWORD 타입 에서 ip 까보기  (0) 2017.03.09

CompareNoCase는 Compare와 같지만 대소문자를 구분하지 않는다는 차이가 있다.

CString str = _T("abc");
CString str2 = _T("abc");
str.CompareNoCase(str2);
만약 두개가 같다면 0을 리턴한다. 즉, 다음과 같이 해야한다.
if(str.CompareNoCase(str2) == 0)
{
  작업
}


출처: http://phiru.tistory.com/60 

'프로그래밍 > MFC' 카테고리의 다른 글

MFC S_OK HRESULT형 구조  (0) 2017.07.17
MFC CMap GetStartPosition, GetNextAssoc  (0) 2017.07.17
MFC ListControl 한개 이상 선택하기  (0) 2017.06.23
MFC 컨트롤 변수화 하기  (0) 2017.06.22
MFC DWORD 타입 에서 ip 까보기  (0) 2017.03.09

CMap 의 함수인 GetStartPosition, GetNextAssoc 함수 사용법


1
2
3
4
5
POSITION pos = mapGuiData->GetStartPosition();
while(pos != NULL)
{
    mapGuiData->GetNextAssoc(pos, strKey, strValue); //position, key, value
}
cs


POSITION 변수를 이용하여 GetStartPosition() 함수로 처음 포지션을 잡아 준 후,

while문같은 반복문을 이용하여 GetNextAssoc 함수를 이용하는 것이다. 

GetNextAssoc 함수는 포지션(pos)을 입력하면, key값과 value값을 준 파라미터에 담겨져 나오는 것 같다.


참고로, mapGuiData 는 포인터 변수로 내가 설정해놓았기 때문에 본 예제에서는 ->를 사용한 것이다.

'프로그래밍 > MFC' 카테고리의 다른 글

MFC S_OK HRESULT형 구조  (0) 2017.07.17
MFC CompareNoCase  (0) 2017.07.17
MFC ListControl 한개 이상 선택하기  (0) 2017.06.23
MFC 컨트롤 변수화 하기  (0) 2017.06.22
MFC DWORD 타입 에서 ip 까보기  (0) 2017.03.09

ListControl 한 개 이상 선택하는 방법


POSITION을 이용하여 해당 위치 정보를 가져와서, while문으로 돌리는 원리같음


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
    POSITION pos = mListCtrl.GetFirstSelectedItemPosition(); 
 
    if (pos == NULL
    AfxMessageBox(_T("No items were selected!\n")); 
    else 
    { 
        while (pos) 
        { 
            int nItem = mListCtrl.GetNextSelectedItem(pos); 
            CString temp = mListCtrl.GetItemText(nItem,2); 
            temp.Format(_T("%s seq가 선택됨"),temp); 
            AfxMessageBox(temp); 
 
        }
    }
cs


mListCtrl은 리스트박스의 변수이름이다. 변수 이름을 바꾸는 방법은 다른 포스팅에 있으니 참고.

여기 를 클릭하시면 변수 이름을 변경하는 방법의 포스팅으로 이동합니다.


출처 : http://bigmark.tistory.com/15

'프로그래밍 > MFC' 카테고리의 다른 글

MFC CompareNoCase  (0) 2017.07.17
MFC CMap GetStartPosition, GetNextAssoc  (0) 2017.07.17
MFC 컨트롤 변수화 하기  (0) 2017.06.22
MFC DWORD 타입 에서 ip 까보기  (0) 2017.03.09
[MFC]C1189 에러  (0) 2016.03.18

MFC에서 컨트롤을 변수화하여 코딩하는 방법




일단, 어떻게 코딩하는 건지 적어놓긴 했는데, 저게 이벤트로 만든 메서드인지 아니면 그냥 만든 메서드인지는 잘 모르겠다..

이벤트로 만든 메서드라면 아직 방법은 잘 모르겠다. 일단 코드라도 저장해놓는다.

'프로그래밍 > MFC' 카테고리의 다른 글

MFC CMap GetStartPosition, GetNextAssoc  (0) 2017.07.17
MFC ListControl 한개 이상 선택하기  (0) 2017.06.23
MFC DWORD 타입 에서 ip 까보기  (0) 2017.03.09
[MFC]C1189 에러  (0) 2016.03.18
[MFC]MSB8031 오류  (0) 2016.03.18

256이 넘는 상수값을 헥사값으로 표현하기


1
2
int tmep = 1310;
byte[] intBytes = BitConverter.GetBytes(temp);
cs


결과 : intByte[0] = 30 / intByte[1] = 5


5와 30(1E)를 합치면 51E가 되어 즉, 1310이 나오게 된다.

순서 주의하여 써야함!!


그냥 쓰고싶으면 Reverse를 이용하면 됨!(아래 참고)

1
2
3
4
int intValue;
byte[] intBytes = BitConverter.GetBytes(intValue);
Array.Reverse(intBytes);
byte[] result = intBytes;

cs


내 생각인데.. result는 딱히 없어도 될것 같다.. 충분히 intBytes에서 바뀌어있을거같은뎅


먼저, Serializable을 이용하여 직렬화 구조체를 만든다.


1
2
3
4
5
6
[Serializable()]
public struct COMBO_LIST
{
    public int a;
    public int b;
}
cs

나는 이런식으로 만들었다.


데이터를 저장하는 부분의 소스


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
private void button1_Click(object sender, EventArgs e)
{
    List<COMBO_LIST> list = new List<COMBO_LIST>();
    COMBO_LIST combolist = new COMBO_LIST();
    combolist.a = 1;
    combolist.b = 2;
    list.Add(combolist);
    combolist.a = 3;
    combolist.b = 4;
    list.Add(combolist);
 
    FileStream fs = new FileStream("DataFile.dat", FileMode.Create);
 
    BinaryFormatter formatter = new BinaryFormatter();
    try
    {
        formatter.Serialize(fs, list);
    }
    catch
    {
        Console.WriteLine("실패!!!!");
        throw;
    }
    finally
    {
        fs.Close();
    }
}
cs

파일을 열어 새로운 저장공간에 저장하는 부분의 소스

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
private void button2_Click(object sender, EventArgs e)
{
    List<COMBO_LIST> list = new List<COMBO_LIST>();
    COMBO_LIST combolist = new COMBO_LIST();
 
    FileStream fs = new FileStream("DataFile.dat", FileMode.Open);
    try
    {
        BinaryFormatter formatter = new BinaryFormatter();
        list = (List<COMBO_LIST>)formatter.Deserialize(fs);
    }
    catch
    {
        Console.WriteLine("실패!!!!!!!열기");
        throw;
    }
    finally
    {
        fs.Close();
    }
 
    int cnt = list.Count;
    for (int i = 0; i < cnt; i++)
    {
        //데이터 차례로 담기.
        Console.WriteLine("{0} and {1}", list.ElementAt(i).a, list.ElementAt(i).b);
    }
}
 
//결과 : 1 and 2
//       3 and 4
cs


참고사이트 : http://thismoments.tistory.com/58

http://honestgame.tistory.com/37

double 소수점 n째 자리까지 나타내기


본 예제는 4째자리까지 나타내는 예제


1
2
3
4
5
6
double itemp = 23040;
itemp * 0.001;
string str_temp = itemp.ToString("F4", CultureInfo.InvariantCulture);
 
//결과 : 23.0400
//CultureInfo는 Globalization을 선언해야 된다.
cs


CultureInfo 는 치다보면 아래 파란색 줄 눌러서 나오는(using 선언) Globalization을 추가하면 사용 가능하다.

'프로그래밍 > C#' 카테고리의 다른 글

C# int to hex(byte)  (0) 2017.06.15
C# 리스트를 파일(dat)로 저장하기  (0) 2017.06.09
C# 컨트롤 - 원치않는 포커스 없애기  (0) 2017.05.29
C# TextBox 엔터 개행  (0) 2017.05.29
C# 바이트 파일 읽기  (0) 2017.05.26

텍스트박스 textbox 커서 없애기

버튼 포커스 없애기


원치 않는 포커스가 있을 경우, 컨트롤 속성에 가서



TapStop 을 false로 바꿔주면 된다.

'프로그래밍 > C#' 카테고리의 다른 글

C# 리스트를 파일(dat)로 저장하기  (0) 2017.06.09
C# double 소수점 n째 자리까지 나타내기  (0) 2017.06.08
C# TextBox 엔터 개행  (0) 2017.05.29
C# 바이트 파일 읽기  (0) 2017.05.26
C# 바이트 파일 저장  (0) 2017.05.26

TextBox 개행이 \n 으로 되지 않는다. 이럴 경우엔 다음과 같은 방법을 사용하면 된다


1. \n 대신 \r\n 을 쓴다.

또는,

2. \n 대신 Environment.NewLine 을 쓴다.


ex)


1
tb.Text += Environment.NewLine;
cs



출처 : http://akangels-textcube.blogspot.kr/2009/12/c-textbox-%EC%A4%84%EB%B0%94%EA%BE%B8%EA%B8%B0.html

바이트 파일 읽기


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
private void Btn_byteOpen_Click(object sender, EventArgs e)
{
    byte[] byte_load = new byte[256];
    //파일오픈창 생성 및 설정
    OpenFileDialog ofd = new OpenFileDialog();
    ofd.Title = "파일 열기";
    ofd.Filter = "텍스트 문서 | *.txt| 모든 파일 (*.*) | *.*";
 
    DialogResult dr = ofd.ShowDialog();
    string str = null;
    //OK버튼 클릭시
    if (dr == DialogResult.OK)
    {
        byte_load = File.ReadAllBytes(ofd.FileName);
    }
}
cs


'프로그래밍 > C#' 카테고리의 다른 글

C# 컨트롤 - 원치않는 포커스 없애기  (0) 2017.05.29
C# TextBox 엔터 개행  (0) 2017.05.29
C# 바이트 파일 저장  (0) 2017.05.26
C# 한글을 ASCII 값의 byte 로 변환  (0) 2017.05.25
C# string to hex  (0) 2017.05.24

바이트를 파일로 저장하기


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
private void Btn_byteSave_Click(object sender, EventArgs e)
{
    SaveFileDialog saveFileDialog1 = new SaveFileDialog();
    saveFileDialog1.Filter = "텍스트 문서|*.txt";
    saveFileDialog1.Title = "저장하기";
    DialogResult dr = saveFileDialog1.ShowDialog();
 
    if (dr == DialogResult.OK)
    {
        if (saveFileDialog1.FileName != "")
{
            string dir = saveFileDialog1.FileName; //경로 + 파일명
            FileStream file = new FileStream(dir, FileMode.Create);
            file.Write(testBuf1, 0, testBuf1.Length);
            file.Close();
        }
    }
}


cs


'프로그래밍 > C#' 카테고리의 다른 글

C# TextBox 엔터 개행  (0) 2017.05.29
C# 바이트 파일 읽기  (0) 2017.05.26
C# 한글을 ASCII 값의 byte 로 변환  (0) 2017.05.25
C# string to hex  (0) 2017.05.24
C# byte를 헥사값으로 출력  (0) 2017.05.22
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
static void Main(string[] args)
{
        //
        // TODO: 여기에 응용 프로그램을 시작하는 코드를 추가합니다.
        string str = "가나다"
        char[] charArray = str.ToCharArray(); 
        Console.WriteLine("Char Array"); 
//        for(int i=0;i<charArray.Length;i++) 
//                Console.WriteLine((int)charArray[i]); 
        foreachchar a in charArray )
                Console.WriteLine("{0}", (int)a);
 
Console.WriteLine(); 
 
byte[] byteArray = System.Text.ASCIIEncoding.Default.GetBytes(str); 
         
Console.WriteLine("Byte Array"); 
//        for(int i=0;i<byteArray.Length;i++) 
//                Console.WriteLine(byteArray[i]); 
        foreachchar a in byteArray )
                Console.WriteLine("{0}", (int)a);
}
cs



출처 : http://www.hoons.net/board/cshaptip/content/419


'프로그래밍 > C#' 카테고리의 다른 글

C# 바이트 파일 읽기  (0) 2017.05.26
C# 바이트 파일 저장  (0) 2017.05.26
C# string to hex  (0) 2017.05.24
C# byte를 헥사값으로 출력  (0) 2017.05.22
C# 보안 액세스 거부 문제 해결  (2) 2017.05.22

텍스트파일 읽어와서 헥사로 저장하기


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
 
            string read = null;
            //파일오픈창 생성 및 설정
            OpenFileDialog ofd = new OpenFileDialog();
            ofd.Title = "파일 열기";
            //ofd.FileName = "test";
            ofd.Filter = "텍스트 문서 | *.txt| 모든 파일 (*.*) | *.*";
 
            //파일 오픈창 로드
            DialogResult dr = ofd.ShowDialog();
             string str = null;
            //OK버튼 클릭시
            if (dr == DialogResult.OK)
            {
                StreamReader sr = new StreamReader(ofd.FileName);
 
                label6.Text = "";
                while (sr.Peek() >= 0)
                {
                    str = sr.ReadLine().ToString(); //엔터친부분 찾아서 나눠 읽어옴
                    read += str; //한줄로 모으기
                    
                }
                string[] temp = read.Split('\x020'); // 공백 없애기
                for (int i = 0; i < 256; i++)
                {
                    int value = Convert.ToInt32(temp[i], 16);
                    readByte[i] = (byte)value;
                }
                AllDataPrint(readByte, label6);
                testBuf2 = readByte;
            }
            //취소버튼 클릭시 또는 ESC키로 파일창을 종료 했을경우
            else if (dr == DialogResult.Cancel)
            {
                //return "";
            }
 
//testBuf2 는 byte[] 256크기임
//readByte도 byte[] 256크기임
//testbuf2를 이용하여 작업하려고 최종 바이트를 담아놓는 역할을 한 
cs



1
2
3
4
byte hex = 112;
textBox.Text = string.Format("hex : {0:X2} \r\n", hex);
 
//결과 : hex : 70
cs


0:X2를 이용하면 헥사값이 바로 나옴!

'프로그래밍 > C#' 카테고리의 다른 글

C# 한글을 ASCII 값의 byte 로 변환  (0) 2017.05.25
C# string to hex  (0) 2017.05.24
C# 보안 액세스 거부 문제 해결  (2) 2017.05.22
C# 문자열 자르기 substring / Trim  (0) 2017.04.20
C# 소문자 대문자 변환  (0) 2017.04.20

C# 보안 액세스 거부 문제


가끔 C# 개발을 하다보면 액세스가 거부될 때가 있다. 이 부분의 문제는 거의 보면 접근권한의 문제인 것 같다. 본인의 프로젝트의 권한을 높이기 위해선 다음과 같이 설정해주고, 프로그램을 껏다가 키면 잘 해결된다. 적어도 나의 경우는 그렇다!!!


1. 프로젝트 오른쪽 클릭 > 속성에 들어간다.



보안 탭에서 위와 같이 설정한다. clickOne 보안 설정 사용을 체크하고, 완전 신뢰 응용 프로그램을 체크하면, 솔루션 탐색기에서 manifest 파일이 하나 튀어나온다.


2. manifest 설정해주기



위와 같이 level을 requireAdministrator로 바꿔준다. 위의 주석은 3가지 접근 권한 단계인 것 같다. requireAdministraror도 충분한 권한을 가지고 있으니 위의 주석에서 가져와 붙여넣기를 해준다. 

(사진을 클릭하시면 크게 볼 수 있습니다.)


그리고 마지막으로, manifest를 다시 숨겨주면 된다. 숨기는 방법은 위의 ClickOne보안 설정 사용을 다시 해제해 주면 된다.



그리고 마지막으로 다시빌드를 해주자!



'프로그래밍 > C#' 카테고리의 다른 글

C# string to hex  (0) 2017.05.24
C# byte를 헥사값으로 출력  (0) 2017.05.22
C# 문자열 자르기 substring / Trim  (0) 2017.04.20
C# 소문자 대문자 변환  (0) 2017.04.20
C# 폼과 폼간의 객체 사용  (0) 2017.04.19


made by Lee Jae-wook

제어판에서 삭제했을 시 삭제가 제대로 이루어지지 않음은 여러가지 이유가 있겠지만,

나의 경우는 레지스트에 uninstall 경로를 잘못 입력해 놓아서 삭제가 안되는 이유였다.


레지스트리 확인 한번쯤 해보자.

'프로그래밍 > NSIS' 카테고리의 다른 글

NSIS 깃허브에 올려진 예제 파일 저장해놓기  (0) 2017.04.18
[펌] NSIS 기본적인 사용방법  (0) 2017.04.04
NSIS 플러그인 적용하기  (0) 2017.04.03
NSIS User Manual  (0) 2017.04.03

1. substring(시작위치, 살릴 문자열 갯수)


1
2
3
4
string str = "1a2b3c";
 
Console.WriteLine(str.substring(2,3));
//결과 : 2b3  2부터 3개 살림(0부터 세는 것)

cs


2. substring(시작위치)


1
2
3
4
string str = "1a2b3c";
 
Console.WriteLine(str.substring(3));
//결과 : b3c (3번째부터 끝까지 다 가져오는것)
cs


출처 : http://ikasu.tistory.com/26


3. Trim()


1
2
3
4
string str = "      1a2b3c";
 
Console.WriteLine(str.Trim());
//결과 :1a2b3c (공백삭제)
cs


출처 : http://infodbbase.tistory.com/96

'프로그래밍 > C#' 카테고리의 다른 글

C# byte를 헥사값으로 출력  (0) 2017.05.22
C# 보안 액세스 거부 문제 해결  (2) 2017.05.22
C# 소문자 대문자 변환  (0) 2017.04.20
C# 폼과 폼간의 객체 사용  (0) 2017.04.19
C# 엔터를 이용하여 로그인하기  (0) 2017.04.13
1
2
3
4
5
6
7
string str = "abcd"
 
str.ToUpper();
//결과 : ABCD
 
str.ToLower();
//결과 : abcd
cs


숫자랑 섞여있어도, 알파벳을 찾아내어 대문자 또는 소문자로 다 알아서 바꿔준다.

'프로그래밍 > C#' 카테고리의 다른 글

C# 보안 액세스 거부 문제 해결  (2) 2017.05.22
C# 문자열 자르기 substring / Trim  (0) 2017.04.20
C# 폼과 폼간의 객체 사용  (0) 2017.04.19
C# 엔터를 이용하여 로그인하기  (0) 2017.04.13
C# string to uint  (0) 2017.04.03

+ Recent posts