#include <windows.h>
#define ID_HELP 150
#define ID_EDIT 180
#define ID_TEXT 200
char nEditTwo[128]= "Input String Here." ;
BOOL CALLBACK DialogProc (HWND, UINT, WPARAM, LPARAM) ;
LPWORD lpwAlign ( LPWORD lpIn)
{
ULONG ul;
ul = (ULONG) lpIn;
ul +=3;
ul >>=2;
ul <<=2;
return (LPWORD) ul;
}
int main() {
HGLOBAL hgbl;
LPDLGTEMPLATE lpdt;
LPDLGITEMTEMPLATE lpdit;
LPWORD lpw;
LPWSTR lpwsz;
LRESULT ret;
int nchar;
hgbl = GlobalAlloc(GMEM_ZEROINIT, 1024);
if (!hgbl)
return -1;
lpdt = (LPDLGTEMPLATE)GlobalLock(hgbl);
// Define a dialog box.
lpdt->style = WS_POPUP | WS_BORDER | WS_SYSMENU
| DS_MODALFRAME | WS_CAPTION;
lpdt->cdit = 3; // number of controls
lpdt->x = 10; lpdt->y = 10;
lpdt->cx = 100; lpdt->cy = 70;
lpw = (LPWORD) (lpdt + 1);
*lpw++ = 0; // no menu
*lpw++ = 0; // predefined dialog box class (by default)
lpwsz = (LPWSTR) lpw;
nchar = 1+ MultiByteToWideChar (CP_ACP, 0, "DialogBox", -1,
lpwsz, 50);
lpw += nchar;
//-----------------------
// Define an OK button.
//-----------------------
lpw = lpwAlign (lpw);
lpdit = (LPDLGITEMTEMPLATE) lpw;
lpdit->x = 10; lpdit->y = 50;
lpdit->cx = 80; lpdit->cy = 15;
lpdit->id = IDOK; // OK button identifier
lpdit->style = WS_CHILD | WS_VISIBLE | BS_DEFPUSHBUTTON;
lpw = (LPWORD) (lpdit + 1);
*lpw++ = 0xFFFF;
*lpw++ = 0x0080; // button class
lpwsz = (LPWSTR) lpw;
nchar = 1+MultiByteToWideChar (CP_ACP, 0, "Exit", -1, lpwsz, 50);
lpw += nchar;
*lpw++ = 0; // no creation data
//-----------------------
// Define a Help button.
//-----------------------
lpw = lpwAlign (lpw);
lpdit = (LPDLGITEMTEMPLATE) lpw;
lpdit->x = 10; lpdit->y = 30;
lpdit->cx = 80; lpdit->cy = 15;
lpdit->id = ID_HELP; // Help button identifier
lpdit->style = WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON;
lpw = (LPWORD) (lpdit + 1);
*lpw++ = 0xFFFF;
*lpw++ = 0x0080; // button class atom
lpwsz = (LPWSTR) lpw;
nchar = 1+MultiByteToWideChar (CP_ACP, 0, "DisplayInput", -1, lpwsz, 50);
lpw += nchar;
*lpw++ = 0; // no creation data
//-----------------------
// Define a EDIT.
//-----------------------
lpw = lpwAlign (lpw);
lpdit = (LPDLGITEMTEMPLATE) lpw;
lpdit->x = 10; lpdit->y = 10;
lpdit->cx = 80; lpdit->cy = 12;
lpdit->id = ID_EDIT; // Help button identifier
lpdit->style = ES_LEFT | WS_BORDER | WS_TABSTOP | WS_CHILD | WS_VISIBLE;
lpw = (LPWORD) (lpdit + 1);
*lpw++ = 0xFFFF;
*lpw++ = 0x0081; // edit class atom
/*lpwsz = (LPWSTR) lpw;
lstrcpyW(lpwsz, L"Edit"); // button label (Unicode)
lpw = (LPWORD) (lpwsz + lstrlenW(lpwsz) + 1);*/
*lpw++ = 0; // no creation data
//-----------------------
// Define a static text control.
//-----------------------
/*lpw = lpwAlign (lpw);
lpdit = (LPDLGITEMTEMPLATE) lpw;
lpdit->x = 10; lpdit->y = 10;
lpdit->cx = 40; lpdit->cy = 20;
lpdit->id = 200; //ID_TEXT; // text identifier
lpdit->style = WS_CHILD | WS_VISIBLE | SS_LEFT;
lpw = (LPWORD) (lpdit + 1);
*lpw++ = 0xFFFF;
*lpw++ = 0x0082; // static class
for (lpwsz = (LPWSTR)lpw;
*lpwsz++ = (WCHAR) *lpszMessage++;
);
lpw = (LPWORD)lpwsz;
*lpw++ = 0;*/ // no creation data
GlobalUnlock(hgbl);
ret = DialogBoxIndirect(NULL,
(LPDLGTEMPLATE) hgbl,
NULL,
(DLGPROC) DialogProc);
GlobalFree(hgbl);
return ret;
}
BOOL CALLBACK DialogProc(HWND hDlg, UINT iMsg, WPARAM wParam, LPARAM lParam)
{
switch (iMsg)
{
case WM_INITDIALOG :
SetDlgItemText ( hDlg, ID_EDIT, nEditTwo );
return TRUE ;
case WM_COMMAND :
switch (LOWORD (wParam))
{
case ID_EDIT :
GetDlgItemText (hDlg, ID_EDIT, nEditTwo, 127);
return TRUE;
case ID_HELP :
MessageBox( NULL, nEditTwo, "Input Data", MB_OK | MB_SYSTEMMODAL | MB_NOFOCUS);
return TRUE;
case IDOK :
EndDialog (hDlg, 0) ;
return TRUE ;
}
break ;
}
return FALSE ;
}
'Programming > MFC' 카테고리의 다른 글
헤더 정의 해서 쓸때.. (0) | 2006.05.17 |
---|---|
CreateDialogIndirect 모달리스 다이얼로그 (0) | 2006.05.17 |
분할 윈도우를 이용하여 뷰 전환하기 (0) | 2006.05.05 |
CSplitterWnd::CreateView (0) | 2006.05.04 |
Control의 배경색 및 글자색 변경 (0) | 2006.04.19 |