¼³Á¤ ´ëÈ»óÀÚÀÇ ÄÚµå¿Í ¼³Á¤À» Àû¿ëÇÏ´Â ApplyNow ÇÔ¼ö¸¦ ¿Ï¼ºÇß´Ù. ÀÌÁ¦ È£½ºÆ®°¡ ÀÌ ÇÔ¼ö¸¦ È£ÃâÇϵµ·Ï Çغ¸ÀÚ. µµ±¸/±âº» ¼³Á¤ ¸Þ´ºÇ׸ñÀ» ¼±ÅÃÇÒ ¶§ Config ÇÔ¼ö¸¸ È£ÃâÇÏ¸é µÈ´Ù.
void OnCommand(HWND hWnd,WPARAM wParam,LPARAM lParam)
{
case IDM_TOOL_CONFIG:
Config();
break;
....
Config ÇÔ¼ö´Â ¼³Á¤ ´ëÈ»óÀÚ¸¦ ¸¸µé°í ȸ鿡 Ç¥½ÃÇÏ¿© »ç¿ëÀڷκÎÅÍ ¿É¼ÇÀ» º¯°æÇÒ ¼ö ÀÖµµ·Ï ÇÏ°í ¿É¼ÇÀ» Àû¿ëÇÏ´Â °Í±îÁö ´Ù ÇϹǷΠÀÌ ÇÔ¼ö¸¸ ºÒ·¯ÁÖ¸é ¼³Á¤ º¯°æ¿¡ °ü·ÃµÈ ¸ðµç µ¿ÀÛÀÌ Ã³¸®µÈ´Ù. Option±¸Á¶Ã¼´Â Ç×»ó »ç¿ëÀÚ°¡ ¼±ÅÃÇÑ ¼³Á¤»óŸ¦ °¡Áö°Ô µÉ °ÍÀÌ´Ù. ÀÌ ±¸Á¶Ã¼´Â »õ·Î¿î Â÷Àϵ带 »ý¼ºÇÒ ¶§µµ Àû¿ëµÈ´Ù. ´ÙÀ½ ÇÔ¼ö´Â »õ·Î Â÷Àϵ带 ¸¸µé ¶§ ApiEditÄÁÆ®·ÑÀÇ ¼³Á¤À» Option±¸Á¶Ã¼ÀÇ ¼³Á¤´ë·Î º¯°æÇÑ´Ù.
void SetSetting(CApiEdit &Ae)
{
SOption Ori;
HDC hdc;
LOGFONT tFont;
if (Option.Hangul) {
MySetImeMode(Ae.hWnd,TRUE);
}
if (Option.bNoFirstSpace != Ori.bNoFirstSpace) {
Ae.SetNoFirstSpace(Option.bNoFirstSpace);
}
if (Option.RightWrap != Ori.RightWrap) {
Ae.SetRightWrap(Option.RightWrap);
}
if (Option.ColMark != Ori.ColMark) {
Ae.SetColMark(Option.ColMark);
}
if (Option.LineRatio != Ori.LineRatio) {
Ae.SetLineRatio(Option.LineRatio);
}
if (Option.bWrap == TRUE) {
if (Option.nWrap != Ae.GetWrap()) {
Ae.SetWrap(Option.nWrap);
}
} else {
Ae.SetWrap(0);
}
if (Option.HideSelType != Ori.HideSelType) {
Ae.SetHideSelType(Option.HideSelType);
}
if (Option.nShowCurLine != Ori.nShowCurLine) {
Ae.SetShowCurLine(Option.nShowCurLine);
}
if (Option.bShowMargin != Ori.bShowMargin) {
Ae.SetShowState(SHOWMARGIN,Option.bShowMargin);
}
if (Option.bShowLineNum != Ori.bShowLineNum) {
Ae.SetShowState(SHOWLINENUM,Option.bShowLineNum);
}
if (Option.bShowEnter != Ori.bShowEnter) {
Ae.SetShowState(SHOWENTER,Option.bShowEnter);
}
if (Option.bShowTab != Ori.bShowTab) {
Ae.SetShowState(SHOWTAB,Option.bShowTab);
}
if (Option.bShowSpace != Ori.bShowSpace) {
Ae.SetShowState(SHOWSPACE,Option.bShowSpace);
}
if (Option.TabWidth != Ori.TabWidth) {
Ae.SetTabWidth(Option.TabWidth);
}
if (Option.bUseLineEnd != Ori.bUseLineEnd) {
Ae.SetUseLineEnd(Option.bUseLineEnd);
}
if (Option.bAllowDrag != Ori.bAllowDrag) {
Ae.SetAllowDrag(Option.bAllowDrag);
}
if (Option.CaretWidth != Ori.CaretWidth) {
Ae.SetCaretWidth(Option.CaretWidth);
}
if (Option.bHideCurLine != Ori.bHideCurLine) {
Ae.SetHideCurLine(Option.bHideCurLine);
}
if (Option.bCalcTabWithAvg != Ori.bCalcTabWithAvg) {
Ae.SetCalcTabWithAvg(Option.bCalcTabWithAvg);
}
if (Option.logfont.lfHeight != Ori.logfont.lfHeight) {
tFont=Option.logfont;
hdc=GetDC(NULL);
tFont.lfHeight=Option.logfont.lfHeight*GetDeviceCaps(hdc,LOGPIXELSY)/72;
tFont.lfWidth=0;
ReleaseDC(NULL,hdc);
Ae.SetFont(&tFont);
}
if (Option.cFore & 0xff000000) {
Ae.SetForeColor(Option.cFore & 0xffffff);
}
if (Option.cBack & 0xff000000) {
Ae.SetBackColor(Option.cBack & 0xffffff);
}
if (Option.cSelFore & 0xff000000) {
Ae.SetSelForeColor(Option.cSelFore & 0xffffff);
}
if (Option.cSelBack & 0xff000000) {
Ae.SetSelBackColor(Option.cSelBack & 0xffffff);
}
if (Option.MarColor1 & 0xff000000) {
Ae.SetMarColor1(Option.MarColor1 & 0xffffff);
}
if (Option.MarColor2 & 0xff000000) {
Ae.SetMarColor2(Option.MarColor2 & 0xffffff);
}
if (Option.MarkColor & 0xff000000) {
Ae.SetMarkColor(Option.MarkColor & 0xffffff);
}
if (Option.CodeColor & 0xff000000) {
Ae.SetCodeColor(Option.CodeColor & 0xffffff);
}
if (Option.CurColor & 0xff000000) {
Ae.SetCurColor(Option.CurColor & 0xffffff);
}
if (Option.NumColor & 0xff000000) {
Ae.SetNumColor(Option.NumColor & 0xffffff);
}
}
±âº» ¿É¼ÇÀ» °¡Áö´Â Ori ±¸Á¶Ã¼¸¦ »ý¼ºÇϸé ÀÌ ±¸Á¶Ã¼´Â È£½ºÆ®ÀÇ µðÆúÆ® ¿É¼Ç´ë·Î »ý¼ºµÉ °ÍÀÌ´Ù. Ori ±¸Á¶Ã¼ ³»¿ë°ú Option ±¸Á¶Ã¼ÀÇ ³»¿ë Áß ´Ù¸¥ °Í¸¸ ã¾Æ ³»¸é ApiEdit¿¡ Ãß°¡·Î ÁöÁ¤ÇØ¾ß ÇÒ ¼³Á¤°ªÀ» ¾Ë ¼ö ÀÖÀ¸¸ç ÀÌ ¿É¼ÇµéÀ» »õ·Î »ý¼ºµÈ ApiEdit¿¡ Àû¿ëÇÑ´Ù. ±× ¿ÜÀÇ ¿É¼ÇÀº µðÆúÆ®¿Í °°À¸¹Ç·Î ±»ÀÌ »õ·Î ¿É¼ÇÀ» Àû¿ëÇÒ ÇÊ¿ä°¡ ¾ø´Ù. ¸¸¾à ÄÁÆ®·ÑÀÇ µðÆúÆ®¿Í È£½ºÆ®ÀÇ µðÆúÆ®°¡ ´Ù¸£´Ù¸é ÄÁÆ®·ÑÀÇ µðÆúÆ®¿Í ´Ù¸¥ °ªÀ» ã¾Æ Àû¿ëÇØ¾ß ÇÑ´Ù.
¿¹¸¦ µé¾î »ö»ó°ªÀº Ori¿Í ºñ±³ÇÏÁö ¾Ê°í »óÀ§ ¹ÙÀÌÆ®°¡ 0ÀÌ ¾Æ´Ñ °æ¿ì, Áï ÄÁÆ®·ÑÀÇ µðÆúÆ®¿Í ´Ù¸¦ °æ¿ì¸¸ »ö»óÀ» ¼³Á¤Çϵµ·Ï ÇÏ¿´´Ù. Option::Init¿¡¼ ÃʱâÈÇϴ ȣ½ºÆ®ÀÇ µðÆúÆ®°¡ ÄÁÆ®·Ñ µðÆúÆ®¿Í ´Ù¸£±â¸¸ ÇÏ¸é »ö»óÀ» ¹«Á¶°Ç º¯°æÇÑ´Ù. ÀÌ ÇÔ¼ö´Â Â÷Àϵ尡 »ý¼ºµÈ Á÷ÈÄ¿¡ È£ÃâµÇ¸ç µû¶ó¼ ¿É¼Ç º¯°æ ÈÄ »ý¼ºµÇ´Â ¸ðµç ApiEdit´Â Option ±¸Á¶Ã¼ÀÇ ¼³Á¤´ë·Î »ý¼ºµÈ´Ù.
SetSetting°ú ApplyNowÀÇ Äڵ尡 ºñ½ÁÇÏÁö¸¸ µÎ ÇÔ¼ö´Â Àû¿ëÇÏ´Â ´ë»óÀÌ ´Ù¸£´Ù. ApplyNow´Â ÀÌ¹Ì »ý¼ºµÇ¾î ÀÖ´Â ApiEdit¿¡ ´ëÇؼ Àû¿ëÇÏ´Â °ÍÀÌ°í SetSettingÀº »õ·Î »ý¼ºµÇ´Â ApiEditÀÇ ¿É¼ÇÀ» º¯°æÇÏ´Â °ÍÀÌ´Ù. Â÷Àϵ尡 »ý¼ºµÇ´Â WM_CRAETE¿¡¼ ApiEdit¸¦ »ý¼ºÇÑ Á÷ÈÄ¿¡ ÀÌ ÇÔ¼ö¸¦ ºÒ·¯ ÁÖ¸é µÈ´Ù.
LRESULT CALLBACK DGChildProc(HWND hWnd,UINT iMessage,WPARAM wParam,LPARAM lParam)
{
switch(iMessage) {
case WM_CREATE:
....
pSi=new SInfo;
SetWindowLong(hWnd,0,(LONG)pSi);
pSi->Ae.Create(0,0,0,0,WS_CHILD | WS_VISIBLE,1,hWnd);
SetSetting(pSi->Ae);
....
±Û²Ã ¼±ÅÃÀ» À§ÇØ ÆùÆ® ¿°Å °á°ú¸¦ °¡Áö´Â arFont ¹è¿Àº ¸ÞÀÎ À©µµ¿ì°¡ Æı«µÉ ¶§ ÇØÁ¦Çϵµ·Ï ÇÑ´Ù. ¼³Á¤ ´ëÈ»óÀÚ°¡ ÇÑ ¹øµµ È£ÃâµÇÁö ¾Ê¾Ò´Ù¸é arFont´Â NULL°ªÀ» °¡Áú °ÍÀ̸ç ÀÌ ¶§´Â ¹è¿À» ÇØÁ¦ÇÏÁö ¾Ê¾Æµµ µÈ´Ù.
void OnDestroy(HWND hWnd,WPARAM wParam,LPARAM lParam)
{
if (arFont)
free(arFont);
PostQuitMessage(0);
}
ÀÌ·Î½á ¼³Á¤ ´ëÈ»óÀÚ¿¡ ´ëÇÑ ¸ðµç ÄÚµå ÀÛ¼ºÀÌ ³¡³µ´Ù. ¿©±â±îÁö Äڵ带 ÀÛ¼ºÇÑ ÈÄ ½ÇÇàÇغ¸¸é Á¦´ë·Î µ¿ÀÛÇÒ °ÍÀÌ´Ù. ApiEdit¿Í DangeunÀº ¿©±â¼ Àû¿ëÇÑ ¿É¼Çº¸´Ù ´õ ¸¹Àº ¿É¼ÇÀ» Á¦°øÇÏ¸ç ¾ÕÀ¸·Î °è¼Ó ¸¸µé¾î ³ª°¥ °ÍÀÌ´Ù. ÀÏ´Ü ¼³Á¤ º¯°æ¿¡ ´ëÇÑ ±âº» »À´ë°¡ ¿Ï¼ºµÇ¾úÀ¸¹Ç·Î Ãß°¡µÇ´Â ¿É¼ÇÀ» ó¸®ÇÏ´Â °ÍÀº ±×¸® ¾î·ÆÁö ¾Ê´Ù. ´ëÈ»óÀÚ ÇÁ·Î½ÃÀú´Â ´õ ¼Õº¼ °ÍÀÌ ¾ø°í ApplyNow¿Í SetSetting ÇÔ¼ö¿¡ Àû¿ë Äڵ常 Ãß°¡·Î ÀÛ¼ºÇÏ¸é µÈ´Ù.