<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="http://valley.egloos.com/rss/style/style.xsl" type="text/xsl" media="screen"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
	<channel>
		<title>이글루스 'mfc' 태그 최근글</title>
		<link>http://valley.egloos.com/tag/mfc</link>
		<description>mfc</description>
		<language>ko</language>
		<pubDate>Wed, 23 May 2012 15:32:10 +0900</pubDate>
		<generator>Egloos</generator>
		<item>
	<title><![CDATA[[펌] 쓰레드 사용법]]></title>
	<link>http://heilow.egloos.com/83536</link>
	<guid>http://heilow.egloos.com/83536</guid>
	<description>
	<![CDATA[ 
// 데브피아(devpia) 가욱현, 정대원 님의 글을 토대로 함다.  1. 개요   현재 대부분의 OS는 프로세스 스케쥴링에 의해 프로그램의 멀티태스킹(Multi-tasking)을 지원하고 있다.  멀티태스킹이란 실행되고있는 프로그램을 일정 단위로 잘라서(slice) 순서대로 CPU를 사용하게끔 하는 것 인데,  사용자는 마치 동시에 여러 개의 프로그램이 실행되는 것처럼 느낄 수 있게 된다.  즉, CPU 사용률을 최대화 하고, 대기시간과 응답시간의 최소화를 가능케 해주는 방법이다.   이번에는 프로세스 한 개만 놓고 보자.  한 프로세스는 구성면에서 [텍스트]-[데이터]-[스택] 영역으로 구성되어있고, 기능면에서는 텍스트의 모듈들은 각각의 역할을 가지고 있다.  프로세스에서의 공유메모리영역을 제외한 부분	]]>
	</description>
	<pubDate>Wed, 23 May 2012 15:32:10 +0900</pubDate>
	<dc:creator><![CDATA[괴짜 개발자의 괴짜 서식지]]></dc:creator>
</item>
<item>
	<title><![CDATA[::CreateThread,  _beginthread,  _beginthreadex,  ::AfxBeginThread 차이점]]></title>
	<link>http://heilow.egloos.com/83533</link>
	<guid>http://heilow.egloos.com/83533</guid>
	<description>
	<![CDATA[ 
1. C/C++프로그래밍과 ::CreateThread   윈도우가 제공하는 CreateThread 함수는 스레드를 생성하는 함수이다. 하지만 C/C++ 로  코드를 작성하는 경우에는 CreateThread 를 사용해서는 안 되고, 마이크로소프트 C/C++  runtime-library 에서 제공하는 _beginthreadex 함수를 사용해야 한다. 다른 컴파일러 에서도 ::CreateThread 함수를 대체할 만한 함수를 제공할 것이며, 반드시 컴파일러에 의해  제공되는 다른 함수를 사용해야 한다.   2. 멀티 스레드 안전한 C/C++ Library   역사적으로 C runtime-library 개발자는 멀티 스레드 어플리케이션에서 C runtime-library 를 사용하였을 때 발생하는 문제에 대해서는	]]>
	</description>
	<pubDate>Wed, 23 May 2012 15:31:00 +0900</pubDate>
	<dc:creator><![CDATA[괴짜 개발자의 괴짜 서식지]]></dc:creator>
</item>
<item>
	<title><![CDATA[MFC Thread]]></title>
	<link>http://heilow.egloos.com/83530</link>
	<guid>http://heilow.egloos.com/83530</guid>
	<description>
	<![CDATA[ 
 Worker Thread : 메시지 루프를 가지고 있지 않다.User Interface Thread : 메시지 루프를 가지고 있다. Worker Thread  CWinThread* AfxBeginThread(함수,인자,우선순위,스택사이즈,플래그,보안);  //전역 함수함수 :  UINT (*pfn)(LPVOID pParam)인자 : LPVOID pParam우선순위 : THREAD_PRIORITY_NORMAL  (디폴트값)스택사이즈 : 0  (스레드 생성한 부모스레드와 같은 크기값 디폴트)플래그 : 0 (곧바로 실행) 정지하려면 CREATE_SUSPENDED, 재시작  ResumeThread()호출보안 : 그냥 NULL로 기억 관련 유용 메소드 (CWinThread)int GetThreadPriority()	]]>
	</description>
	<pubDate>Wed, 23 May 2012 15:29:27 +0900</pubDate>
	<dc:creator><![CDATA[괴짜 개발자의 괴짜 서식지]]></dc:creator>
</item>
<item>
	<title><![CDATA[SuspendThread, ResumeThread]]></title>
	<link>http://heilow.egloos.com/83527</link>
	<guid>http://heilow.egloos.com/83527</guid>
	<description>
	<![CDATA[ 
 가끔 스레드를 쓰다보면, 스레드를 일시 정지 했다가 다시 시작하는 작업이 필요할 때가 있습니다.그럴 때 사용하는 함수가 SuspendThread()와 ResumeThread()죠. 그런데 이게 특이한게,내부적으로 suspend count 라는걸 가지고있습니다. 뭔얘기냐면, suspend를 할 때 마다 suspend count를 1씩 증가시키고, resume을 할 때 마다, suspend count를 1씩 감소시켜서 suspend count가 0일 때만 스레드를 돌린다는거죠. 즉, 10번 중지 했으면, 10번 재실행 해야 다시 돌아간다는 말씀. 근데, 사람 일이 어디 그런가요? 여기저기서 중지를 시켜놨는데, 한방에 짜잔 하고 재실행 하고 싶을 때가 있다는 말이죠. 으.. 그럼 어떡해야하죠? 일일이 어디서 S	]]>
	</description>
	<pubDate>Wed, 23 May 2012 15:28:21 +0900</pubDate>
	<dc:creator><![CDATA[괴짜 개발자의 괴짜 서식지]]></dc:creator>
</item>
<item>
	<title><![CDATA[[MFC] AfxbeginThread 사용과 해제 [소스 첨부]]]></title>
	<link>http://heilow.egloos.com/83491</link>
	<guid>http://heilow.egloos.com/83491</guid>
	<description>
	<![CDATA[ 
                     MFC로 쓰레드를 사용하기 위해 간단 예제 파일을 만들어 보았다.위에는 쓰레드시작 버튼을 누르면 EDITBOX1 과 EDITBOX2를 차례대로 1부터 10까지 출력하는 예제이다소스는 다음과 같다.  UINT CAfxbeginThreadTestDlg::ThreadStart1(LPVOID pParam)	]]>
	</description>
	<pubDate>Wed, 23 May 2012 14:51:52 +0900</pubDate>
	<dc:creator><![CDATA[괴짜 개발자의 괴짜 서식지]]></dc:creator>
</item>
<item>
	<title><![CDATA[희소 행렬 곱셈(Sparse Matrix Multiplication) ]]></title>
	<link>http://heilow.egloos.com/80302</link>
	<guid>http://heilow.egloos.com/80302</guid>
	<description>
	<![CDATA[ 
 이해하면 코딩이 보이지만 그전까지는 복잡하죠. 머 이런거로 돈받는 사람도 있더군요.(좀아까까지는 사려고 했슴) 좋은 자료를 구해서 올려 봅니다. A 행렬         0 1 2             1 2 0             0 1 0          B행렬1 0 11 1 00 0 0 BT(Transpose:전치행렬) : 행렬곱셈의 원리상 A행렬의 한행과 B행렬의 한열을 곱하는데 희소 행렬 표시에서 1 1 0                                   같은 row(열)로 계산하면 편하므로 col을 row로 놓고 처리합니다. 0 1 01 0 0 희소행렬 표시 A                희소행렬 표시 Brow col value                      row col va	]]>
	</description>
	<pubDate>Sun, 20 May 2012 19:43:07 +0900</pubDate>
	<dc:creator><![CDATA[괴짜 개발자의 괴짜 서식지]]></dc:creator>
</item>
<item>
	<title><![CDATA[희소행렬 (sparse matrix) ]]></title>
	<link>http://heilow.egloos.com/80298</link>
	<guid>http://heilow.egloos.com/80298</guid>
	<description>
	<![CDATA[ 
희소행렬﻿ (sparse matrix) -A행렬처럼 많은 원소들의 값이 0인 행렬.   A=  행렬의 원소들을 모두 기억장치에 저장하면 기억공간이 많이 필요하다.  특히 희소행렬의 경우 0인 원소들의 개수가 0이 아닌 원소들의 개수보다 많을 때, 0인 원소들을 모두 기억시킨다면 기억장치의 낭비가 심하게 된다.그렇기 때문에, 희소행렬중 0이 아닌 원소들만 새로운 행렬로서 기억시킴으로써 기억공간의 낭비를 방지한다.  B=   행렬 B는 희소행렬 A를 다시 나타낸 것이다. B[0,0] = 6은 원래의 희소행렬 A의 행의 개수B[0,1] = 6은 원래의 희소행렬 A의 열의 개수B[0,2] = 8은 원래의 희소행렬 A의 0이 아닌 원소들의 개수B[1,0] = 0은 0이아닌 첫 번째 원소의 행의 위치B[1,1] = 0	]]>
	</description>
	<pubDate>Sun, 20 May 2012 19:41:13 +0900</pubDate>
	<dc:creator><![CDATA[괴짜 개발자의 괴짜 서식지]]></dc:creator>
</item>
<item>
	<title><![CDATA[[MFC] MultiByteToWideChar 사용 시 지역별 Codepage]]></title>
	<link>http://paulownia.egloos.com/4701959</link>
	<guid>http://paulownia.egloos.com/4701959</guid>
	<description>
	<![CDATA[ 
유럽쪽 문자를 출력할 일이 생겨서 Multibyte 문자를 WideChar로 변환하는 과정에서MultiByteToWideChar 함수를 사용하게 되는 데 매개변수로 CodePage를 입력 받는다.CodePage는 지역별로 다른데 그 내용은 아래 MSDN 링크에서 참조하면 된다.   중요한 건 참조를 잘 해야 한다는 것인데... 이게 이 포스팅의 요점이다.저 링크를 보면 같은 지역인데도, 지원하는 플랫폼에 따라 CodePage가 별도로 적혀있다.예를 들어 내가 필요한 지역 CodePage Central European 인데,이것을 찾아보면 네 군데나 있다. 지원하는 플랫폼을 순서대로 보면  OEM Latin 2; Central European (DOS)ANSI Central European; Central E	]]>
	</description>
	<pubDate>Tue, 08 May 2012 05:39:45 +0900</pubDate>
	<dc:creator><![CDATA[푸른나무그늘]]></dc:creator>
</item>
<item>
	<title><![CDATA[MFC에서 Stack OverFlow가 일어난다.]]></title>
	<link>http://oh00n.egloos.com/2016912</link>
	<guid>http://oh00n.egloos.com/2016912</guid>
	<description>
	<![CDATA[ 
단순히   int test[512][512]  이렇게 선언했는데 스택 오버플로우가 나는 이유가 무엇일까?  단순히 버그겠지...뭐	]]>
	</description>
	<pubDate>Sat, 05 May 2012 23:49:52 +0900</pubDate>
	<dc:creator><![CDATA[프로그래밍은 플밍플밍해]]></dc:creator>
</item>
<item>
	<title><![CDATA[두 점을 잇는 선분 그리기]]></title>
	<link>http://heilow.egloos.com/62072</link>
	<guid>http://heilow.egloos.com/62072</guid>
	<description>
	<![CDATA[ 
 x,y 좌표계 에서 두 점 (x1, y1), (x2, y2)를 잇는 선분 그리기 //(x1, y1) 에서 (x2, y2)에서 직선 그리기  m = (double)(y2 - y1)/(x2 - x1);if( m&amp;gt;-1 &amp;amp;&amp;amp; m &amp;lt; 1 ) {     if( x1 &amp;gt; x2 )     {            swap(x1, x2);            swap(y1, y2);      }      for( x = x1; x&amp;lt;= x2; x++)     {         y = (int)floor(m*(x-x1) + y1 + 0.5);          if( y &amp;gt;= 0 &amp;amp;&amp;amp; y &amp;lt; h )         {             ptr[y][x] = c;   	]]>
	</description>
	<pubDate>Sat, 05 May 2012 19:48:59 +0900</pubDate>
	<dc:creator><![CDATA[괴짜 개발자의 괴짜 서식지]]></dc:creator>
</item>
<item>
	<title><![CDATA[두점을 입력받아 직선의 방정식을 구하기]]></title>
	<link>http://heilow.egloos.com/62068</link>
	<guid>http://heilow.egloos.com/62068</guid>
	<description>
	<![CDATA[ 
#include &amp;lt;stdio.h&amp;gt; #include &amp;lt;math.h&amp;gt; void main(void) {     int x1,y1,x2,y2;     printf(&quot;x1, y1 : &quot;);     scanf(&quot;%d, %d&quot;, &amp;amp;x1, &amp;amp;y1);     printf(&quot;x2, y2 : &quot;);     scanf(&quot;%d, %d&quot;, &amp;amp;x2, &amp;amp;y2);      printf(&quot;거리 : %lf\n&quot;,sqrt((x1-x2)*(x1-x2) + (y1-y2)*(y1-y2)));    if(x1==x2)         printf(&quot;직선의 기울기 : 무한대\n&quot;);     else         printf(&quot;직선의 기울기 : %lf\n&quot;,(double)(y2-y1)/(x2-x1) );	]]>
	</description>
	<pubDate>Sat, 05 May 2012 19:43:34 +0900</pubDate>
	<dc:creator><![CDATA[괴짜 개발자의 괴짜 서식지]]></dc:creator>
</item>
<item>
	<title><![CDATA[mfc dialog + console 모드 띄우기]]></title>
	<link>http://katalog.egloos.com/4695822</link>
	<guid>http://katalog.egloos.com/4695822</guid>
	<description>
	<![CDATA[ 
MFC GUI 기반 프로젝트에서는 console 창이 나타나지 않는다  하지만 디버깅 목적이나 기타 다른 이유로 보고 싶을때  #pragma comment(linker, &quot;/entry:WinMainCRTStartup /subsystem:console&quot;)  이걸 추가해주면 콘솔창도 함께 뜬다.  	]]>
	</description>
	<pubDate>Wed, 18 Apr 2012 10:29:11 +0900</pubDate>
	<dc:creator><![CDATA[루오니의 집]]></dc:creator>
</item>
<item>
	<title><![CDATA[BEGIN_MESSAGE_MAP, END_MESSAGE_MAP,  DECLARE_MESSAGE_MAP]]></title>
	<link>http://ssombong.egloos.com/575266</link>
	<guid>http://ssombong.egloos.com/575266</guid>
	<description>
	<![CDATA[ 
MFC를 할 일이 생길것 같아서 공부해봤다.BEGIN_MESSAGE_MAP, END_MESSAGE_MAP, DECLARE_MESSAGE_MAP이 멀까?  일단 DECLARE_MESSAGE_MAP은 헤더에 선언되어 있다.이건 다음과 같다.  #define DECLARE_MESSAGE_MAP() \ protected: \  static const AFX_MSGMAP* PASCAL GetThisMessageMap(); \  virtual const AFX_MSGMAP* GetMessageMap() const; \  BEGIN_MESSAGE_MAP은 다음과 같다.  #define BEGIN_MESSAGE_MAP(theClass, baseClass) \  PTM_WARNING_DISABLE \  const AFX_M	]]>
	</description>
	<pubDate>Mon, 09 Apr 2012 17:09:35 +0900</pubDate>
	<dc:creator><![CDATA[Brain Backup Storage]]></dc:creator>
</item>
<item>
	<title><![CDATA[윈도우 투명도 만들기  ]]></title>
	<link>http://kang6264.egloos.com/1662649</link>
	<guid>http://kang6264.egloos.com/1662649</guid>
	<description>
	<![CDATA[ 
윈도우 상태를 투명도로 만들려면 2개의 함수만 사용하면 투명한 윈도우를 만들 수 있다. SetWindowLong()함수는 이미 지정된 윈도우 스타일을 변경할떄 사용하는거구 SetLayeredWindowAttributes() Layered윈도우 속성을 지정할떄 사용한다. 예제로는 다이얼로그 베이스를 사용했고 BOOL CTransDlg::OnInitDialog()  {   CDialog::OnInitDialog(); // 시스템 메뉴에 &quot;정보...&quot; 메뉴 항목을 추가합니다. // IDM_ABOUTBOX는 시스템 명령 범위에 있어야 합니다.   ASSERT((IDM_ABOUTBOX &amp;amp; 0xFFF0) == IDM_ABOUTBOX);   ASSERT(IDM_ABOUTBOX &amp;lt; 0xF000); CMenu*	]]>
	</description>
	<pubDate>Thu, 08 Mar 2012 17:41:10 +0900</pubDate>
	<dc:creator><![CDATA[fthink]]></dc:creator>
</item>
<item>
	<title><![CDATA[[MFC] VS 2011 MFC Upgrade]]></title>
	<link>http://micingamja.egloos.com/5638966</link>
	<guid>http://micingamja.egloos.com/5638966</guid>
	<description>
	<![CDATA[ 
Visual Studio 2011 에서 다음 내용으로 MFC가 Update되는 군요...ㅋㅋㅋ앞으로도 Windows 가 세상에서 사용되는한...Native Mode의 최고 개발 라이브러니는 MFC일거라는 군요....^^그러게 말입니다.  Addressed executable size of applications linked statically to MFCFixed DLLMain best practices violations by deferring initialization of the afxGlobalData structureFixed over 220 bugs, nearly 100 of which were reported by customers via the Connect web siteFixed a lar	]]>
	</description>
	<pubDate>Wed, 07 Mar 2012 14:53:39 +0900</pubDate>
	<dc:creator><![CDATA[절대감사.절대희망.절대긍정.미친감자 좌충우돌 프로그래밍 이야기]]></dc:creator>
</item>
	</channel>
</rss>

