GUI 프로그래밍 기초

gurumong의 이미지

GUI 프로그래밍을 공부하는 초보입니다

GUI 인터페이스를 가지는 프로그램은
윈도우폼과 거기에 배치할 콘트롤등을 코드로 생성하고
그것들을 화면에 그리고 발생하는 이벤트등을 감시하는
무한루프를 도는 함수를 호출하는식이잖아요

그렇다면 GUI인터페이스와 상관없이 뒤에서 계속 돌아가야하는 작업에 대해서는
어떻게 GUI를 담당하는 무한루프를 가지는 함수를 떠나서 개별적으로 돌아갈수가 있는것인가요? 타이머 콘트롤 등을 이용해서 아주 작은 단위로 쪼개서 조금씩 실행해야하는것인가요?;

예를 들면 바이러스검사를 실시하면 뒤로는 계속 바이러스 검사를 수행하고
검사 결과를 실시간으로 화면상에 출력하면서
일시정지 버튼을 누르면 일시중지가 되잖아요

cleansugar의 이미지

GUI라고 해서 for 문으로 루프되는 부분이 실제로 보이지는 않습니다.

일반 텍스트 프로그램하고 비슷해요. 그냥 메인에다가 콘트롤 그려주면 알아서 돌려줍니다.

타이머나 프로그레스바같은 건 언어마다 쓰레드 기능이 있어서 그걸로 합니다.

쓰레드는 함수가 여러개 동시에 돌아가게 만듭니다.

그리고 콜백함수라고 해서 함수를 만들면 운영체제가 그 함수를 자동으로 실행해주는 게 있어요.

재벌 2세가 재벌이 될 확률과
금메달리스트 2세가 금메달을 딸 확률이 비슷해지도록
자유오픈소스 대안화폐를 씁시다.

아이디의 아이디어 무한도전
http://blog.aaidee.com

귀태닷컴
http://www.gwitae.com

shint의 이미지

1. (A쓰레드 생성) 바이러스 검사 실행
2. (A쓰레드) 검색한 바이러스 GUI에 업데이트
3. (A쓰레드) 일시 정지.시 A쓰레드 정지.
4. (B쓰레드 생성) 백신치료시 GUI에 업데이트된 바이러스 치료.

----------------------------------------------------------------------------
젊음'은 모든것을 가능하게 만든다.

매일 1억명이 사용하는 프로그램을 함께 만들어보고 싶습니다.
정규 근로 시간을 지키는. 야근 없는 회사와 거래합니다.

각 분야별. 좋은 책'이나 사이트' 블로그' 링크 소개 받습니다. shintx@naver.com

mithrandir의 이미지

스레드를 이용해서 동시에 여러가지 작업을 수행 할 (혹은 하는 것처럼) 수 있습니다.
메인 스레드는 GUI코드를, 새로 만든 스레드 하나가 파일검색등의 작업을 하게 만드는거죠.
혹은 얘기하신 것 처럼 타이머로 쪼개서 수행할 수도 있어요.
Win32라면 getmessage대신 peekmesssage를 사용해서, 메시지를 non-block함수로 처리하고 루프안에서 그런 일들을 처리할 수도 있겠죠.

검색 키워드는,
비동기 - asynchronous
스레드 - thread
이벤트 방식 - event driven
non block
GUI multiprocessing

등이 되겠습니다.

언제나 삽질 - http://tisphie.net/typo/
프로그래밍 언어 개발 - http://langdev.net

댓글 달기

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
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.