MoniWiki¸Þ¸ðÀå_MFC
Login:
Password:
´ë¹®|ã±â|¹Ù²ï±Û|¸ñ·Ï|¸Þ¸ðÀå|Ã¥°¥ÇÇ|¸µÅ©
Edit Diff Reload Search Print Info Mail Help RSS

@ 2004-06-16 @
^^* ¿©±â¿¡ Á¤¸®µÈ ³»¿ëÀº Ã¥°ú ÀÎÅÍ³Ý µîÀ» Âü°í·Î °³ÀÎÀûÀÎ ¸ñÀûÀ¸·Î Á¤¸®ÇÑ °Ì´Ï´Ù.

  MFC

          # Button
          # Button/ CBitmapButton
          # ListCtrl
          # Property Sheet
          # CFileDialog¿¡¼­ µð·ºÅ丮¸¦ ¼³Á¤Çϱâ
          # Check Box üũÇϱâ
          ¢¹ gems
                # »õ·Î¿î Ŭ·¡½º¸¦ Ŭ·¡½º À§Á®µå¸¦ ÅëÇÏ¿© ÀνĽÃ۱â
                # UpdataData() ÇÔ¼ö
                # »ç¿ëÀÚ ¸Þ½ÃÁö¸¦ ¹Þ¾Æ CMyViewŬ¶óÀÌ¾ðÆ® ¿µ¿ª¿¡¼­ ó¸®Çϱâ
          # MFCÀÇ ±¸¼º
{_r} ¸Þ¸ðÀåÀ¸·Î °¡±â

¡Ý ±âŸ
* ( (CDirect9MFCView *)(((CMainFrame *)m_pMainWnd)->GetActiveView()) )->OpenFileMapData();
( (CMainFrame *)(this->GetParentFrame()) )->fun();

* if( GetAsyncKeyState( 'F' )) Isfollow = !Isfollow;
if( GetAsyncKeyState( 'T' )) IsThreat = IsThreat;
if( GetAsyncKeyState( 'H' )) IsHeat = IsHeat;
if( GetAsyncKeyState( 'Z' )) IsZoom = IsZoom;

* MFC¿¡¼­ Escape ŰÁ¤ÀÇ
IDR_MAINFRAME ACCELERATORS PRELOAD MOVEABLE PURE
BEGIN
VK_ESCAPE, ID_APP_EXIT, VIRTKEY, NOINVERT
......
END
* MessageBox(NULL, "BuildHeightMap- Error", "Cannot found", 0);
AfxMessageBox( "ÆÄÀÏÀ» ÀÐÀ» ¼ö ¾ø½À´Ï´Ù." );

* DoModal ÇÔ¼ö·Î È£ÃâµÈ ´ÙÀÌ¾Ë·Î±× À§Ä¡ Á¦¾î
BOOL CDialogMD2::OnInitDialog()
{
CDialog::OnInitDialog();
SetWindowPos(NULL, 100, 150, 0,0, SWP_NOZORDER | SWP_NOSIZE);
return TRUE;
}


    ¡Ý Button
* ºñ½ÁÇÑ ·ùÀÇ ¹öư ó¸®
MFC¿¡¼­ Áö¿øÇÏ´Â ¾Æ·¡¿Í °°Àº ¸ÅÅ©·Î¸¦ »ç¿ëÇÏ´Â ¹æ¹ý
ON_COMMAND_RANGE(id1, id2, memberFxn )
1) ¿©±â¼­ ¸®¼Ò½º ¹øÈ£ id1, id2 ´Â ½ÃÄö½ºÇÑ ¹øÈ£·Î ºÎ¿©
¿¹·Î
IDC_BUTTON1 1000 ÀÌ¿´´Ù¸é
IDC_BUTTON2 1001
IDC_BUTTON3 1002
:
IDB_BUTTON8 1007
id1 = IDC_BUTTON1, id2 = IDC_BUTTON8 ·Î ¼³Á¤Çϸé
¸â¹öÇÔ¼ö memberFxn À» ÇØÁÖ¸é IDC_BUTTON1 ~ IDC_BUTTON8 ¹öưÀ»
´­·¯ ÁÙ ¶§¸¶´Ù ¸â¹öÇÔ¼ö memberFxn ÇÔ¼ö¸¦ È£ÃâÇÑ´Ù.
2) À̰ÍÀº À§ÀÚµå·Î ¾ÈµÇ°í ¼öÀÛ¾÷À¸·Î ÄÚµùÇÑ´Ù.
BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd)
// ...
ON_COMMAND_RANGE(IDC_BUTTON1, IDC_BUTTON8, OnButtonClick)
END_MESSAGE_MAP()

void CMyView::OnButtonClick(UINT nID)
{
switch ( nID )
{
case IDC_BUTTON1:
break;
}
}
Çì´õÆÄÀÏ¿¡´Â...
// Generated message map functions
//{{AFX_MSG(CSourceEditView)
...
afx_msg void OnButtonClick(UINT nID)
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
3) ¸¸¾à À̺¥Æ®°¡ ¹ß»ýÇÏÁö ¾ÊÀ¸¸é ¸ÞÀÎÇÁ·¹ÀÓ¿¡ IDR_MYMENU ÀÌ·±½ÄÀ¸·Î ¸Þ´º¸¦ Çϳª ´õ µî·ÏÇÏ°í ¿©±â¿¡ °¢°¢ÀÇ ¹öư ¸®¼Ò½º ¾ÆÀ̵ð¶û °°Àº°ÍÀ¸·Î ¸Þ´º¸¦ Ãß°¡ÇÑ´Ù.


    ¡Ý Button/ CBitmapButton
* CBitmapButton ¸¸µå´Â ¹ý_1
CBitmapButtonÀ¸·Î ¸¸µç ¹öưÀº push button Çü½ÄÀÌ´Ù.
1) ¸ÕÀú Form¿¡ ¹öưÀ» ¸¸µé°í Style¿¡¼­ Owner Draw¸¦ ²À üũ
2) ¹öưÀÇ Ä¸¼ÇÀ» °£´ÜÇÏ°Ô ÁöÁ¤(Áß¿ä)
¿¹¸¦ µé¾î ĸ¼ÇÀÌ "ONE"À̶ó¸é..
3) ÀÌÁ¦ ¸®¼Ò½º¿¡ ¹öư ±×¸²µéÀ» Ãß°¡ÇÕ´Ï´Ù.
À̶§ Ãß°¡ ÇÏ´Â ¸®¼Ò½º À̸§Àº
2¹ø¿¡¼­ ÁöÁ¤ÇÑ Ä¸¼ÇÀÇ À̸§µÚ¿¡ "D" "F" "U" "X" ¸¦ ºÙÀÔ´Ï´Ù
À̸¦Å׸é "ONED" "ONEF" "ONEU" "ONEX" °°Àº ½ÄÀ¸·Î ¸»ÀÔ´Ï´Ù.
"U"=UP/ "D"=Down/ "F"=Æ÷Ä¿½º/ "X"=disable ÀÇ ¶æ
4) CBitmapButton °´Ã¼¸¦ ¸â¹öº¯¼ö·Î ¸¸µì´Ï´Ù.
CBitmapButton m_ButtonOne;
5) OnInitialUpdate() ¿¡ ´ÙÀ½°ú °°ÀÌ ¾¹´Ï´Ù
m_ButtonOne.AutoLoad(IDC_BUTTON_ONE,this);

* CBitmapButton ¸¸µå´Â ¹ý_2
¹æ¹ý 1°ú Å©°Ô ´Ù¸£Áö ¾Ê°í, ¸Ê ¿¬°á ¹æ¹ý¿¡¼­ Â÷À̰¡ ÀÖ´Ù.
1) ¹öưÀÇ ¼Ó¼ºÁß¿¡ property -> style ¿¡¼­ Owner draw ²À check !!
2) ºñÆ®¸ÊÀ¸·Î ¾º¿ï ±×¸²µéÀ» ÇÁ·ÎÁ§Æ®ÀÇ Bit ¸ã ºÎºÐ¿¡ Insert ½ÃÅ´
(Á¤ÀûÀÎ ´À³¦À» ÇÇÇϱâ À§ÇØ ±×¸²Àº µÎ°³¸¦ Áغñ)
3) ÇØ´ç ´ÙÀÌ¾Ë·Î±× ¹Ú½ºÀÇ ¹öư¿¡ ÇØ´çÇÏ´Â º¯¼ö¸¦ Ãß°¡½ÃÄÑ ÁÜ(¹°·Ð ÇØµå¿¡ º¯¼ö¸¦ Á¤ÀÇ)
.h ÆÄÀÏ ºÎºÐ¿¡¼­ public ºÎºÐ¿¡ ¸¸µé¾î Áֽðí
CBitmapButton m_OK;
CBitmapButton m_Cancel;
.cpp ºÎºÐ¿¡
void CADD_AND_DEL_FRIEND::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CADD_AND_DEL_FRIEND)
...
DDX_Control(pDX, IDOK, m_OK); // º¯¼ö¸¦ ÇØ´ç ¾ÆÀ̵ð¿Í ¿¬°á ½ÃÄÑÁØ´Ù.
DDX_Control(pDX, IDCANCEL, m_Cancel);
//}}AFX_DATA_MAP
}
4) ´ÙÀ̾˷αװ¡ »ý¼ºµÇ´Â ÃʱâÈ­ ºÎºÐ¿¡¼­ ¹öư°ú À̹ÌÁö¸¦ ¿¬°á½ÃÄÑÁØ´Ù.
BOOL CADD_AND_DEL_FRIEND::OnInitDialog()
{
CDialog::OnInitDialog();
// ¹öưÀÌ ´­·¯Áö±âÀü À̹ÌÁö¿Í ´­·ÈÀ»¶§ À̹ÌÁö¸¦ ¼³Á¤ÇØ ÁØ´Ù.
m_OK.LoadBitmaps( IDB_OKU, IDB_OKD );
m_Cancel.LoadBitmaps( IDB_CancelU, IDB_CancelD );

// ¹öưÀ» À̹ÌÁö Å©±â¿¡ ¸ÂÃç¼­ ¾º¿öÁØ´Ù.
m_OK.SizeToContent();
m_Cancel.SizeToContent();
return true;
}


    ¡Ý ListCtrl
* ItemÀ» º¯°æÇßÀ»¶§ À̺¥Æ® ó¸®
ItemÀ» º¯°æÇßÀ»¶§ Áï OnItemChanged¸Þ¼¼Áö°¡ ¹ß»ýÇϴµ¥
Ŭ·¡½º À§Àúµå¿¡¼­ NM_CLICK À̺¥Æ® Çڵ鷯¸¦ ³Ö°í..
¾Æ·¡¿Í °°Àº ³»ºÎ Äڵ带 »ðÀÔÇÏ¿© ¿øÇÏ´Â ÀÛ¾÷À» ÇÑ´Ù
void CxxxDlg::OnClickList1(NMHDR* pNMHDR, LRESULT* pResult)
{
NM_LISTVIEW* pList = (NM_LISTVIEW*)pNMHDR;
ASSERT(pList);

'*' pResult = 0;

if(pList->iItem == -1) return;

¸®½ºÆ®ÄÁÆ®·Ñ.GetItemData(pList->iItem);
¸®½ºÆ®ÄÁÆ®·Ñ.GetItemText(pList->iItem, ¼­ºê¾ÆÀÌÅÛ À妽º);
}
* ÃʱâÈ­½Ã ÀÓÀÇÀÇ ¾ÆÀÌÅÛ ¼±ÅÃÇϱâ
¸ÕÀú OnInitDialog()¿¡¼­ ÃʱâÈ­ ÇÑ´Ù.
m_ListCtrl.SetExtendedStyle(LVIS_SELECTED| LVS_NOLABELWRAP | LVS_EX_GRIDLINES | LVS_EX_FLATSB | LVS_EX_FULLROWSELECT);
m_ListCtrl.ModifyStyle(0,LVS_SHOWSELALWAYS); <-- ¿ä°Å Áß¿äÇÔ ¹Ýµå½Ã ÇÒ°Í.

¼±ÅÃÇϰíÀÚ ÇÒ¶§ ¿ä·¸°Ô ÇÏ¸é µÊ´Ï´Ù.
m_ListCtrl.SetItemState(i, LVIS_SELECTED, LVIS_SELECTED); <-- ¼±ÅÃÇϰí, ȸ»öÀ¸·ÎµÊ
m_ListCtrl.EnsureVisible(i,false); <--½ºÅ©·ÑÇϰí
m_ListCtrl.SetFocus();<--Æ÷Ä¿½ºÁÖ°í ÆÄ¶õ»öÀ¸·Î µÊ
¼±ÅÃÇϸé ÀÌÀü²¨´Â ÀÚµ¿ ÇØÁ¦.
* Full Row Select style·Î º¯È¯
m_ListCtrl.SetExtendedStyle( LVS_NOLABELWRAP | LVS_EX_GRIDLINES | LVS_EX_FLATSB | LVS_EX_FULLROWSELECT );
* ƯÁ¤ ¾ÆÀÌÅÛÀÌ º¸À̵µ·Ï ½ºÅ©·Ñ Çϱâ
m_ctrlPacketLog.EnsureVisible( num, TRUE );

* Âü°í»çÀÌÆ®

    ¡Ý Property Sheet
* ÇÁ·ÎÆÛƼ ½¬Æ®¿¡¼­ ùȭ¸é ¼³Á¤ {_-} mysheet.SetActivePage(npage);


    ¡Ý CFileDialog¿¡¼­ µð·ºÅ丮¸¦ ¼³Á¤Çϱâ
OPENFILENAME CFileDialog::m_ofn ;
typedef struct tagOFN {
...
LPCTSTR lpstrInitialDir; // ¿©±â¼­ ¼³Á¤ ^^
...} OPENFILENAME;
»ç¿ë¿¹)
char currentDir[ 256 ]; // ÇöÀçÀÇ °æ·Î
GetCurrentDirectory( NAME_MAX_SIZE, currentDir );
strcat( currentDir, "\\Data\\" );

CFileDialog dlg(...);
dlg.m_ofn.lpstrInitialDir = currentDir;
dlg.DoModal();


    ¡Ý Check Box üũÇϱâ
üũ¹Ú½º.SetCheck(int A); A°¡ 1À̸é üũ, 0À̸é ÇØÁ¦
1) CButton* chkbox1 = (CButton*)GetDlgItem(IDC_CHECK1);
int i = chkbox1->GetCheck(); ÇöÀçÀÇ »óŸ¦ ±¸ÇÔ
chkbox1->SetCheck(1);
2) GetDlgItem(ID_Model_CHK)->SetCheck(1);
3) Chk :
m_Model_Chk = TRUE;
UpdateData(FALSE);
Chk ÇØÁ¦ :
m_Model_Chk = FALSE;
UpdateData(FALSE);


    ¡Ý gems
* »õ·Î¿î Ŭ·¡½º¸¦ Ŭ·¡½º À§Á®µå¸¦ ÅëÇÏ¿© ÀνĽÃ۱â
-. ¸ÕÀú ÇÁ·ÎÁ§Æ® À̸§À¸·Î µÈ XXXX.clw ÆÄÀÏÀ» »èÁ¦ÇÑ´Ù. ¸¸ÀÏÀ» À§ÇØ À̸§À» ¹Ù²ãµÎ´Â °ÍÀÌ ÁÁ´Ù.
-. ±× ´ÙÀ½ Ŭ·¡½º À§Á®µå¸¦ ½ÇÇà½Ã۸é Ŭ·¡½º¿¡ ´ëÇÑ Á¤º¸°¡ ¾ø±â ¶§¹®¿¡ »õ·Ó°Ô ¼³Á¤ÇÏ´Â ´ÙÀ̾ó·Î±×°¡ ³ªÅ¸³­´Ù. ¿©±â¼­ Project List¿¡ ¸ðµÎ µî·Ï½ÃŰ¸é µÈ´Ù. ±×·± ÈÄ ´Ù½Ã Ŭ·¡½º À§Á®µå¸¦ ½ÇÇà½ÃŰ¸é ±âÁ¸ÀÇ Å¬·¡½º »Ó¸¸ ¾Æ´Ï¶ó »õ·Ó°Ô Ãß°¡ÇÑ Å¬·¡½ºµµ À§Á®µå°¡ ÀνÄÇÏ´Â °ÍÀ» ¾Ë ¼ö ÀÖ´Ù.

* UpdataData() ÇÔ¼ö
-. È­¸é¿¡ µ¥ÀÌÅ͸¦ ³ªÅ¸³»±â À§Çؼ­´Â º¯¼ö¿¡ µî·ÏµÇ¾î ÀÖ´Â µ¥ÀÌÅ͸¦ ´ëÈ­ »óÀÚ·Î Àü¼ÛÇÏ´Â ÇÔ¼ö
(º¯¼ö¿¡ µ¥ÀÌÅ͸¦ ±â·ÏÇÏ¿´´Ù ÇÏ¿©µµ È­¸é¿¡´Â ÀÔ·ÂµÈ ¸ð½ÀÀÌ ³ªÅ¸³ªÁö ¾Ê´Â´Ù´Â ÀǹÌ)
-. UpdateData(FALSE); º¯¼ö¸¦ ´ëÈ­ »óÀÚ·Î Àü¼Û
(ÇöÀç º¯¼ö¿¡ µ¥ÀÌÅ͸¦ µî·ÏÇϰí À̰ÍÀ» ´ëÈ­ »óÀÚ·Î Àü¼ÛÇÒ ¶§)
UpdateData(TRUE); ´ëÈ­ »óÀÚ¿¡¼­ º¯¼ö·Î µ¥ÀÌÅ͸¦ Àü¼Û
(´ëÈ­ »óÀÚ¿¡¼­ ¿¡µðÅÍ »óÀÚ °°Àº ÀÚ¿ø¿¡ Á¤º¸¸¦ º¯ÇüÇϰí, ÀÌ º¯ÇüµÈ µ¥ÀÌÅ͸¦ ´Ù½Ã ÀÚ¿øÀ¸·Î ¹Þ¾Æ¾ß ÇÒ °æ¿ì)

* »ç¿ëÀÚ ¸Þ½ÃÁö¸¦ ¹Þ¾Æ CMyViewŬ¶óÀÌ¾ðÆ® ¿µ¿ª¿¡¼­ ó¸®Çϱâ
-. ºäŬ·¡½º¿Í ´ÙÀ̾ó·Î±×Ŭ·¡½ºÀÇ ¿ªÇÒÀº ´ÙÀ½°ú °°°í, ´ÙÀ̾ó·Î±×Ŭ·¡½º´Â ºäŬ·¡½º¸¦ ¾Ë°í ÀÖ¾î¾ßÇÑ´Ù.
ºäŬ·¡½º ==> °¨½ÃÀÚ (½ºÅ¸Å©·¡ÇÁÆ®ÀÇ ¿ÉÀú¹ö¿Í µ¿ÀÏÇÑ ¿ªÇÒ)
´ÙÀ̾ó·Î±×Ŭ·¡½º ==> Á¤º¸ÀǺ¯È­
-. ¹°·Ð SetParent() ÈÄ¿¡ GetParent()·Î ÇØµµ µÇÁö¸¸
À§¿Í °°Àº µðÀÚÀÎÆÐÅÏÀ» °í·ÁÇÏ¸é ´ÙÀ½°ú °°´Ù.(¿ÉÀú¹öÆÐÅÏ)
1) ´ÙÀ̾ó·Î±×Ŭ·¡½º¿¡¼­ ºäŬ·¡½ºÀÇ Æ÷ÀÎÅ͸¦ ÀúÀåÇÒ¼ö ÀÖ´Â ¸â¹öº¯¼ö¸¦¸¸µé°í
2) ºäŬ·¡½º ÃʱâÈ­ÇÔ¼öºÎºÐ¿¡¼­ ´ÙÀ̾ó·Î±×Ŭ·¡½º¿¡ Æ÷ÀÎÅ͸¦ ³Ñ°ÜÁÖ¸é µË´Ï´Ù.
3) ±×¸®°í ¸Þ½ÃÁö¸¦ Á¤ÀÇÇÕ´Ï´Ù.

WM_USER +1 ÀÇ ¸Þ½ÃÁö¸¦ ¸¸µç´Ù±¸ ÇÒ¶§..
  • ºäŬ·¡½ºÀÇ Çì´õºÎºÐ..
    afx_msg long OnMyMsg(WPARAM) wparam,LPARAM lparam);
  • ºäŬ·¡½ºÀÇ ¸Þ½ÃÁö¸Ê ºÎºÐ..
    ON_MESSAGE ( WM_USER+1,OnMyMsg)
  • ´ÙÀ̾ó·Î±×Ŭ·¡½º ³»ºÎ¿¡¼­ ¸Þ½ÃÁöÈ£Ãâ½Ã..
    pViewClass -> SendMessage(WM_USER+1 ,Á¤º¸1, Á¤º¸2);


  •     ¡Ý MFCÀÇ ±¸¼º
    * Application Frameworks(AFS)
    http://gingaminga.com/wiki/imgs/picture/MFC_01.gif

    * AFX Ŭ·¡½ºÀÇ »ó¼Ó °ü°è
    http://gingaminga.com/wiki/imgs/picture/MFC_02.gif

    * AppWizard
    ÇÁ·Î±×·¥À» »õ·Î ¸¸µé ¶§´Â AppWizard¸¦ »ç¿ëÇϴµ¥, AppWizardÀÇ ¿ªÇÒÀº MFCÀÇ AFXŬ·¡½º¿¡¼­ »ó¼ÓÀ» ¹Þ¾Æ, ¾Æ·¡ ±×¸²¿¡¼­¿Í °°Àº ³× °³ÀÇ Å¬·¡½º¸¦ »ý¼º½ÃÄÑ ÁÖ´Â °ÍÀÌ´Ù.
    http://gingaminga.com/wiki/imgs/picture/MFC_03.gif
    http://gingaminga.com/wiki/imgs/picture/MFC_04.gif

    * AFX Ŭ·¡½ºµé °£ÀÇ »óÈ£ÂüÁ¶ °ü°è
    http://gingaminga.com/wiki/imgs/picture/MFC_05.gif
    - µµÅ¥¸ÕÆ® Ŭ·¡½º¿¡¼­ ºä/ ÇÁ·¹ÀÓ À©µµ¿ì ÂüÁ¶
    CDocument::GetFirstViewPosition, GetNextView - ÇϳªÀÇ µµÅ¥¸ÕÆ®´Â ¿©·¯ °³ÀÇ ºä¿Í °áÇÕµÉ ¼ö Àֱ⠶§¹®¿¡ µµÅ¥¸ÕÆ®¿¡¼­ ±×¿Í ¿¬°áµÈ ºä¸¦ ¾òÀ» ¶§´Â ¸î ¹øÂ°·Î ¿¬°áµÈ ºä¸¦ ¾òÀ» °ÍÀÎÁöµµ »ý°¢ÇØ¾ß ÇÑ´Ù.
    CWnd * AfxGetMainWnd();


    {_r} ¸Þ¸ðÀåÀ¸·Î °¡±â

    February, 2010
     123456
    78910111213
    14151617181920
    21222324252627
    28 

    "Fortune Cookies..."

    Ã¥°¥ÇÇ_MFCInternals(1)
    Ã¥°¥ÇÇ_3Dij¸¯Å;ִϸÞÀ̼ÇÇÁ·Î±×·¡¹Ö
    HelpOnXmlPages
    ¸Þ¸ðÀå_C
    last modified 2005-05-23 11:41:20
    °íÄ¡±â|ã±â|ÂÊ Áö¿ì±â|ºñ½ÁÇÑ ÂÊ Valid XHTML 1.0! Valid CSS! powerd by MoniWiki
    0.6918 sec