���\�[�X���g��Ȃ����[�_���_�C�A���O

�@���[�_���_�C�A���O�{�b�N�X���o���ɂ́A���\�[�X���`����DialogBox()���Ăяo���A�Ƃ����̂���ʓI�ȕ��@�̂悤�ł��B�������_�C�A���O�{�b�N�X���`���郊�\�[�X�͍��W�n��������ȏ�ɁA���炩���߃��\�[�X���`���Ă����̂ł͎��s���ɓ��I�Ƀ_�C�A���O�{�b�N�X���쐬�ł��Ȃ��̂ŕs�ւł��B�����ŁA����̓��\�[�X��DialogBox()���g��Ȃ��Ń��[�_���_�C�A���O������������@���l���Ă݂鎖�ɂ��܂��B

���[�_���_�C�A���O

�@���[�_���_�C�A���O�́A�_�C�A���O���‚���܂Ń_�C�A���O���Ăяo�����E�C���h�E�̑��삪�o���Ȃ��A�‚܂薳���������_�C�A���O�ł��B�Ƃ������́A���C���E�C���h�E���炠��E�C���h�E�����[�_���_�C�A���O�{�b�N�X�Ƃ��ČĂяo��������

  1. �E�C���h�E���쐬�����C���E�C���h�E�𖳌����B����𓾂�B
  2. �_�C�A���O�̏������s���A�_�C�A���O���‚�����i�I�����s����j�܂ő҂�
  3. �_�C�A���O��‚��ă��C���E�C���h�E��L�����������Ԃ�

�@�Ƃ���Ύ����ł���͂��ł��B�‚܂�A���[�_���_�C�A���O���Ăяo���đI�����ʂ�Ԃ��֐�dialog()��

  DWORD dialog() { /* ���[�_���_�C�A���O�֐� */

      HWND hwDialog;
      MSG msg;

      /* �_�C�A���O�{�b�N�X�쐬 */
      hwDialog = CreateWindow("CDialog","���[�_���_�C�A���O",
        WS_OVERLAPPEDWINDOW | WS_VISIBLE,CW_USEDEFAULT,CW_USEDEFAULT,
        256,96,NULL,NULL,hInst,NULL);

      /* ���C���E�C���h�E�𖳌������ă��[�_���� */
      EnableWindow(hwMain,FALSE);

      /* ���b�Z�[�W���[�v */
�@�@�@�@�@�@�@�@�E
�@�@�@�@�@�@�@�@�E
      /* �_�C�A���O�����ʂ�Ԃ��܂Ń��[�v */

      /* ���C���E�C���h�E��L���ɂ��ă��[�_������ */
      EnableWindow(hwMain,TRUE);
      BringWindowToTop(hwMain);

      /* �_�C�A���O�̑I�����ʂ�Ԃ� */

  }

�@�Ƃ�������ɂȂ�܂��B���Ȃ̂́A�_�C�A���O�̑I�����ʂł��ˁB�_�C�A���O�{�b�N�X�́A���ɂf�t�h���i��u���ă��[�U�[�����炩�̑I�����s���킯�ł����A���̑I���������s���̂̓_�C�A���O�̃E�C���h�E�v���V�[�W���|�A�‚܂�ʂ̊֐��ł��B�_�C�A���O�֐��̕��Ń_�C�A���O�{�b�N�X�̑I�����ʂ�m�邽�߂ɂ́A�E�C���h�E�v���V�[�W���Ɖ��炩�̕��@�őI�����ʂ�����肷��K�v������܂��B

�@�ʂ̊֐��ƒl�̂��Ƃ������ɂ́A�ϐ��̃|�C���^�𑊎�ɓn�����̕ϐ��𑊎�ɏ���������������@���O���[�o���ϐ����g�����@����y�ł��傤�B����́A�_�C�A���O�֐��ɑI�����ʂ��󂯎��ϐ�dwRes��p�ӂ��āA���̕ϐ��̃A�h���X���_�C�A���O�{�b�N�X�̃E�C���h�E�v���V�[�W���|DialogProc()�ɓn�����ɂ��܂����B�E�C���h�E�v���V�[�W���|�̌^��

  LRESULT CALLBACK DialogProc(HWND,UINT,WPARAM,LPARAM);

�@�Ƃ������̂ł����̂ŁA�ϐ��̃A�h���X��n�����ɂ�HWND��NULL��n���A�ϐ��̃|�C���^��UINT�Ɉꎞ�I�ɃL���X�g���ēn�����ɂ��܂��傤�B����́A�E�C���h�E�v���V�[�W���|�̐擪��

  static LPDWORD lpRes;

  if (hwnd==NULL) {

      /* ���ʕϐ��̃A�h���X��ۑ� */
      lpRes=(LPDWORD)iMsg;
      *lpRes=0;

      return 0;

  }

�@�Ƃ������������Ă����Ηǂ��ł��傤�B����ŁADialogProc()����*lpRes�̒l������������΂��̕ύX�̓_�C�A���O�֐�dialog()�̃��[�J���ϐ�dwRes�ɔ��f����܂��B

�@����A�_�C�A���O�{�b�N�X�ɂ́u�P�ԁv�u�Q�ԁv�Ƃ����Q�‚̃{�^����u���āA�u�P�ԁv���N���b�N���ꂽ��P�A�u�Q�ԁv�Ȃ�Q�A�ǂ�����N���b�N���Ȃ��Ń_�C�A���O���‚���ꂽ��[�P��Ԃ��悤�ɂ��܂����B���̏ꍇ�A�_�C�A���O�{�b�N�X�̃E�C���h�E�v���V�[�W���|�͈ȉ��̂悤�ɂȂ�܂��B

  LRESULT CALLBACK DialogProc(HWND hwnd,UINT iMsg,WPARAM wParam,LPARAM lParam) {

      HWND btN1,btN2;
      static LPDWORD lpRes;

      if (hwnd==NULL) {

          /* ���ʕϐ��̃A�h���X��ۑ� */
          lpRes=(LPDWORD)iMsg;
          *lpRes=0;

          return 0;

      }

      switch (iMsg) {

          case WM_CREATE: /* �E�C���h�E�쐬���̏��� */

              /* �{�^���쐬 */
              btN1=CreateWindow("Button","�P��",WS_CHILD|WS_VISIBLE,
                8,8,80,32,hwnd,(HMENU)0,hInst,NULL);

              btN2=CreateWindow("Button","�Q��",WS_CHILD|WS_VISIBLE,
                96,8,80,32,hwnd,(HMENU)1,hInst,NULL);

              return 0;

          case WM_COMMAND: /* �R�}���h���b�Z�[�W */

              switch (LOWORD(wParam)) {

                  case 0: /* �P�ԃ{�^�� */

                      *lpRes=1;
                      DestroyWindow(hwnd);

                      break;

                  case 1: /* �Q�ԃ{�^�� */

                      *lpRes=2;
                      DestroyWindow(hwnd);

                      break;

              }

              return 0;

          case WM_DESTROY : /* �I������ */

              if (*lpRes==0) /* �ǂ�����I������Ă��Ȃ����-1 */
                  *lpRes=-1;

              return 0;

      }

      return DefWindowProc (hwnd, iMsg, wParam, lParam) ;
	
  }

�@�_�C�A���O�v���V�[�W���|�́A�I��������邩�_�C�A���O���‚�����ƃ_�C�A���O�֐��̃��[�J���ϐ�dwRes�̃A�h���X�ilpRes�j���w���ꏊ�ɒl���������ނ̂ŁA�ϐ�dwRes���u�O�łȂ��ԁv�_�C�A���O�̏������J��Ԃ����ɂȂ�܂��B

  DWORD dialog() { /* ���[�_���_�C�A���O�֐� */

      HWND hwDialog;
      DWORD dwRes;
      MSG msg;

      /* �_�C�A���O�̃E�C���h�E�v���V�[�W���|�Ɍ��ʕϐ��̃A�h���X��n�� */
      DialogProc(NULL,(UINT)(&dwRes),0,0);

      /* �_�C�A���O�{�b�N�X�쐬 */
      hwDialog = CreateWindow("CDialog","���[�_���_�C�A���O",
        WS_OVERLAPPEDWINDOW | WS_VISIBLE,CW_USEDEFAULT,CW_USEDEFAULT,
        256,96,NULL,NULL,hInst,NULL);

      /* ���C���E�C���h�E�𖳌������ă��[�_���� */
      EnableWindow(hwMain,FALSE);

      /* ���b�Z�[�W���[�v */
      while (dwRes==0) { /* �_�C�A���O�����ʂ�Ԃ��܂Ń��[�v */

          GetMessage(&msg,NULL,0,0);

          TranslateMessage(&msg);
          DispatchMessage(&msg);

      }

      /* ���C���E�C���h�E��L���ɂ��ă��[�_������ */
      EnableWindow(hwMain,TRUE);
      BringWindowToTop(hwMain);

      /* �_�C�A���O�̑I�����ʂ�Ԃ� */
      return dwRes;

  }

�@�_�C�A���O�{�b�N�X�֐��́A�ȏ�ɂ悤�Ȋ����ł��B���̊֐��́A�Ăяo�����ƃ_�C�A���O���‚�����܂Ő���𓾂āA�_�C�A���O���‚�����ƑI�����ʂ�Ԃ��܂��B

�v���O����

�@����̃v���O�����́A�u�_�C�A���O�v�Ƃ����{�^����z�u�������C���E�C���h�E�����܂��B�{�^�����N���b�N����ƁAdialog()���Ăяo���ă��[�_���_�C�A���O�𐶐����A�I�����ʂ��^�C�g���o�[�ɕ\�����܂��B

�@���[�_���_�C�A���O�{�b�N�X���Ăяo������

  case 0: /* �u�_�C�A���O�v�{�^�� */

      dwMRes=dialog(); /* �_�C�A���O�Ăяo�� */

      wsprintf(lpszStr,"%d��I��",dwMRes);
      SetWindowText(hwnd,lpszStr);

      break;

�v���O�����\�[�X�\��


�v���O���~���O������ > Windows�v���O���~���O������