mfc에서 다이얼로그 없이 파일을 읽을려면...

oppor의 이미지

요즘 mfc를 이용해서 그래프 그리는 프로그램을 만들고 있는데요.
대충 작동 방식을 설명해 보자면

텍스트 파일에
0.000514203646339070 -770.997628164318
0.00138270765310325 -679.614348452451
0.00241993551848303 -286.143079044462
이런 식의 값이 주루룩 들어 있고,

프로그램에서 버튼 하나를 누르면 이 값들을 읽어서 x 축과 y 축에 점을 하나씩 찍어줄 거거든요.
x축을 시간축으로 보고 시간이 저 위에 있는 값 만큼 흐를때 y축에 하나씩 점이 찍혀야 합니다.

지금 당장 궁금한건,
파일을 읽어 들이는 부분입니다. 책을 봐도 Serialize라는 걸 이용해서 다이얼로그창을 이용한 파일 열기는 설명이 되어 있는데, 이런 과정없이 바로 파일을 열려면 어떻게 해야하는지는 이곳저곳 뒤져봤지만 찾기가 힘드네요.

대충 예상으로는 CGraphDoc클래스에 넣어야 하지 않을까 생각해보지만 이 기능을 넣고 나서 실행하는 부분이랑 어떻게 연결 시켜야 될지 감이 안잡힙니다.

아마도 객체지향에 대해서 모르고 있기 때문인 것 같네요.

이 문제 가르쳐 주실분 혹시 계신가요~^^

madman93의 이미지

어떤것을 원하는지 잘 모르겠습니다.

---------------------------------------------
svn + trac + my project --> success ???
---------------------------------------------

---------------------------------------------
git init
git add .
git commit -am "project init"
---------------------------------------------

cynicjj의 이미지

윗분 말씀처럼 CFile 이나 CStdFile 쓰면 될것 같네요

cppig1995의 이미지

CFile보다는 CArchive가 더 편하실 것 같아요.



한말글 프로그래밍 언어 "열정" http://me-lang.wo.tc

Real programmers /* don't */ comment their code.
If it was hard to write, it should be /* hard to */ read.

oppor의 이미지

네, 저도 제가 원하는걸 제대로 표현하기가 어려운데요.

일단 mfc를 처음 해보는 상태라는걸 먼저 말씀드리고요.

그런 클래스들을 어떤곳에서 어떻게 사용해야 되는지 또는 넣어야 하는지 감을 못잡고 있습니다.

c언어에서는 순차적으로 함수를 불러와서 실행시키는데 반해서 mfc에서는 어느 순간에 그걸 실행되게 할 수 있는지, 또 어디에 넣어줘야 제가 원한는 순간에 실행이 되는지를 모르겠어요.

madman93의 이미지

처음에는 다 그런것이죠..
일단 mfc를 보셔야 될것 같습니다.

일단 다이얼로그에서 하실려면
OnInitDialog()인가???
하는곳이 처음 initilize하는 곳인데
이 부분에 만드신 함수를 넣어 주시면
실행이 될것입니다.

---------------------------------------------
svn + trac + my project --> success ???
---------------------------------------------

---------------------------------------------
git init
git add .
git commit -am "project init"
---------------------------------------------

rubenz의 이미지

1)일단, MFC 클래스 구조도를 한번 봐준다.
2) 순차적인 프로그램이 아닌 이벤트 프로그램(윈도우 이벤트 처리 방식 이해)
3) 메시지맵 이해.(MFC 많이 했다는 사람조차.. 이거에 대해서는 허당인 경우가 많습니다.)
4) 표준 함수 사용과 윈도우 API 사용의 차이.
--. 모든 MFC는 윈도우 API를 모두 포장하고 있다고 봐도 과언이 아닙니다.
--. 표준함수 않습니다.
--. 그러나 표준함수를 써도 프로그래밍 됩니다. 클래스화가 되어 있는건 아니고 헤더에 넣고 하세요.

** 제가 보건데, MFC 클래스 구조도 자체는 잘되어 있는것으로 보입니다만.. 그런데.. 효율성을 위해서 매크로를 여기저기 썼습니다.(이정도 되면 이해 불가..ㅡ.ㅡ)
이거 이해할라면.. 최소 1년... 제대로 이용하려면 1년...머..한 2년은 해야할것 같습니다.

1) #include 표준함수 포함시키고, fopen등을 이용--> 생성자나 initial 부분에 넣으세요.
2) #include CFile등을 포함 시키고 클래스 이용 --> 생성자나 initial 부분에 넣으세요.
3) 윈도우 API 를 이용하세요.. --> 생성자나 initial 부분에 넣으세요.

직렬화는 MFC에서 제공하는 가장 고급 파일 입출력입니다. 단순히 텍스트뿐만 아니라, 문자/구조체/숫자/심지어그림 도 하나의 파일에 넣을수 있습니다.(물론 읽기 순서와 쓰기 순서가 맞아야겠지요?)

MFC를 손놓은지 4년이 지나니 확 다 잊어버려지는군요..
**참고로 제대로 MFC하려면,,, API로만으로 윈도우 프로그램 하실줄 알아야 할겁니다.결국 윈도우 프로그래밍 하기 좋게 만든게 MFC이니까요..

oppor의 이미지

조금 좌절이네요.

겁없이 괜히 뛰어든건가 싶습니다. 사실 졸업 프로젝트로 하는거라 한 6개월 정도 밖에 없거든요. 더군다나 지금 하고 있는건 연습삼아 만들어보라는 '시간에 따른 그래프 그리기...'

컴공도 아니고, 제어계측 공학과라 프로그래밍은 c정도 밖에 못하는데 그나마 제가 잘하는 편이라 이런걸 맡았거든요. 처음엔 책보고 조금씩 하면 될것 같았는데 갈수록 태산이네요..ㅋㅋㅋ

이걸 연습삼아 해보라고 한 선배도 mfc가 뭔지 모르긴 마찬가지.
봉사 코끼리 다리 만지기 식으로 될것 같다는 생각만 가지고 있는 건 똑같으니 기간을 2주 정도 주네요..ㄷㄷㄷㄷㄷ

그래도 제가 프로그래밍에 관신이 좀 있으니까 이번 기회에 배워보자는 생각으로 붙잡고 늘어질 생각인데 이리저리 막힌 벽을 뚫을 생각하면 다리가 후들거리네요..^^;;;

답변주신건 어느정도 이해가 되네요. 또 삽질하러 가봐야 겠습니다. 감사합니다.

madman93의 이미지

없을것 같습니다.

rubenz님은 MFC에 관해서 프로그래밍을 하려면 이라는 내용같구요

원하시는 내용의 프로그래밍 결과만 원하신다면
얼마든지 속성으로도 가능합니다.

ㅋㅋㅋㅋㅋ 이건.. 제가 7년 정도 windows쪽에서 몸담았던 경험이니
분명한 사실입니다.

---------------------------------------------
svn + trac + my project --> success ???
---------------------------------------------

---------------------------------------------
git init
git add .
git commit -am "project init"
---------------------------------------------

klyx의 이미지

C밖에 못하는데 '책보고 조금씩 하면' MFC 굉장히 어려울 것입니다.
프로그래머가 아니라면 Win32API는 몰라도 되니, 일단 C++입문서 한권 정도는 뗀후에 바로 MFC책한권 사서 따라해보시면 될것같습니다.
문제는 기간이 2주밖에 없다는 것 같네요-_-;

kaeri17의 이미지

MFC의 구조를 생각하면서 프로그래밍 하기 보다는(MFC의 경우 메세지 맵도 너무 방대한 매크로들로 구성되어있고, 여러모로 작은 프로그램용은 아닙니다) C++잠깐 배운 다음 API레퍼런스 보면서 ATL이나 WTL쪽을 하는게 더 나을 것 같다는 생각도 드네요..

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.