ÆÄÀÏ ÀúÀå ±â´ÉÀÌ ÀÛ¼ºµÇ±â Àü¿¡´Â ÇÁ·Î±×·¥°ú ¹®¼ÀÇ »ý¸í ÁֱⰡ ÀÏÄ¡ÇÑ´Ù. ÇÁ·Î±×·¥À» Çѹø ½ÇÇàÇϸé Á¾·áÇÒ ¶§±îÁö óÀ½ ¸¸µé¾ú´ø ¹®¼¸¸ °¡Áö°í ³î¾Æ¾ß ÇÏ´Â °ÍÀÌ´Ù. ±×·¡¼ ¹®¼¸¦ ÃʱâÈÇÏ´Â Äڵ尡 ĵ¹ö½ºÀÇ OnCreate¿¡ ÀÖ°í ÇØÁ¦ ÄÚµå´Â ĵ¹ö½º°¡ ÆÄ±«µÉ ¶§´Â OnDestory¿¡ ÀÖ¾ú´Ù. ±×·¯³ª ÆÄÀÏ ÀÔÃâ·Â ±â´ÉÀÌ µé¾î°¡¸é ½ÇÇà Áß°£¿¡µµ ÆÄÀÏÀ» »õ·Î ¸¸µé ¼ö ÀÖ°í ¸¸µé´ø ¹®¼¸¦ ÀúÀåÇϰųª µð½ºÅ©ÀÇ ÆÄÀÏÀ» ºÒ·¯ ¿Ã ¼öµµ ÀÖ´Ù. ±×·¡¼ ĵ¹ö½º¸¦ ÃʱâÈ/ÇØÁ¦ÇÏ´Â ÀÛ¾÷°ú ¹®¼¸¦ ÃʱâÈ/ÇØÁ¦ÇÏ´Â ÀÛ¾÷ÀÇ ½ÃÁ¡ÀÌ ºÐ¸®µÈ´Ù. ¹®¼¿Í °ü·ÃµÈ ÃʱâÈ¿Í ÇØÁ¦¸¸ ÇÏ´Â º°µµÀÇ ÇÔ¼ö¸¦ ´ÙÀ½°ú °°ÀÌ ÀÛ¼ºÇÑ´Ù.
void InitDoc()
{
arSize=100;
arNum=0;
arGrowBy=50;
arObj=(DObject **)malloc(sizeof(DObject *)*arSize);
NowSel=-1;
ChangeCaption("À̸§¾øÀ½");
bModified=FALSE;
}
void FreeDoc()
{
int idx;
for (idx=0;idx<arNum;idx++) {
if (arObj[idx]->Type >= DT_TEXT && arObj[idx]->Type <= DT_META) {
free(arObj[idx]->Text);
}
free(arObj[idx]);
}
free(arObj);
}
ĵ¹ö½º¿¡¼ ó¸®ÇÏ´ø ¹®¼ ÃʱâÈ ÀÛ¾÷Àº InitDocÀ¸·Î À̵¿µÇ´Âµ¥ ¹®¼ÀÇ ÁÖ¿ä ÀÚ·á ±¸Á¶ÀÎ arObj¸¦ ÃʱâÈÇÏ°í ¼±Åà »óÅÂ¿Í ¹®¼ À̸§, º¯°æ ¿©ºÎ µîµµ ÃʱâȵȴÙ. FreeDoc¿¡´Â ¹®¼ ÆíÁý¿¡ »ç¿ëÇÏ´ø ¹è¿À» ÇØÁ¦ÇÏ´Â Äڵ尡 ÀÛ¼ºµÇ¾î ÀÖ´Ù. ĵ¹ö½ºÀÇ OnCreate, OnDestroy¿¡¼´Â ¹®¼¿Í °ü·ÃµÈ ÃʱâÈ/ÇØÁ¦ Äڵ带 »èÁ¦ÇÏ°í ´ë½Å ÀÌ ÇÔ¼öµéÀ» È£ÃâÇÑ´Ù.
LRESULT OnCreate(HWND hWnd,WPARAM wParam,LPARAM lParam)
{
....
InitDoc();
return 0;
}
LRESULT OnDestroy(HWND hWnd,WPARAM wParam,LPARAM lParam)
{
....
FreeDoc();
return 0;
}
OnCreate, OnDestroy¿¡ ³²Àº ÄÚµå´Â ¹®¼¿Í´Â »ó°ü¾ø´Â ĵ¹ö½º ÀÚ½ÅÀÇ ÃʱâÈ/ÇØÁ¦ ÄÚµå »ÓÀÌ´Ù. ¿©±â±îÁö Äڵ带 ÀÛ¼ºÇÏ¸é ½ÇÇà °á°ú´Â ÀÏ´Ü µ¿ÀÏÇÏ´Ù. OnCreateÀÇ ÀϺΠÄڵ带 InitDocÀ¸·Î ³ª´©¾î ÁÖµÇ OnCreateÀÇ ³¡¿¡¼ ÀÌ ÇÔ¼ö¸¦ È£ÃâÇϱ⠶§¹®ÀÌ´Ù. ±×·¯³ª ¹®¼ ÃʱâÈ ºÎºÐ¸¸ º°µµÀÇ ÇÔ¼ö·Î ºÐ¸®ÇßÀ¸¹Ç·Î ¹®¼¸¦ »õ·Î ¸¸µé Çʿ䰡 ÀÖÀ» ¶§´Â InitDocÀ» È£ÃâÇÏ¸é µÈ´Ù.
¾î¶² ÇÔ¼ö°¡ ¼öÇàÇÏ´ø ÀÛ¾÷ÀÇ ÀϺκи¸ µû·Î È£ÃâÇØ¾ß ÇÒ °æ¿ì°¡ ÀÖ´Ù¸é À§ÀÇ ¿¹Ã³·³ ÇÊ¿äÇÑ ºÎºÐÀ» º°µµÀÇ ÇÔ¼ö·Î ºÐ¸®ÇÏ¸é µÈ´Ù. ¾ÖÃÊÀÇ ÇÔ¼ö´Â ºÐ¸®µÈ ÇÔ¼ö¸¦ È£ÃâÇÔÀ¸·Î½á ¿ø·¡ ÇÏ´ø ÀÏÀ» º¯ÇÔ¾øÀÌ °è¼Ó ¼öÇàÇÒ ¼ö ÀÖ°í ÇÁ·Î±×·¥ÀÇ ´Ù¸¥ °÷¿¡¼µµ ºÐ¸®µÈ ÇÔ¼ö¸¦ È£ÃâÇÏ¿© ¿øÇÏ´Â ÀÛ¾÷¸¸ ¼öÇàÇÒ ¼ö ÀÖ´Ù. ÇÁ·Î±×·¥À» È®ÀåÇÏ´Â ÀÛ¾÷Àº ÀÌ·± ½ÄÀ¸·Î ÇÔ¼ö¸¦ °è¼Ó ºÐ¸®ÇØ ³ª°¡´Â °úÁ¤ÀÇ ¿¬¼ÓÀÌ´Ù.