none
windows7에서 dialog dll로딩시 커스텀 컨트롤 생성안되는 문제 RRS feed

  • 질문

  • 안녕하세요.

    dialog를 띄우는 dll에 activex control을 child window로 추가하였습니다.

    WinXP, Vista에서는 모두 dll로딩시 dialog box가 실행되었습니다.

    Windows7에서는 특정 피시의 경우 실행이 안되는 문제가 있습니다.

    테스트를 많이 한 피시의 경우에는 실행이 가능한데 os초기설정상태로 설정된 경우에는 모두 실행이 안되었습니다.

    모두 업데이트(서비스팩)되어있지 않은 상태입니다.

    이럴 경우 어떻게 해결해야하나요? 고수님들의 해결방안 좀 부탁드립니다.

    ====================================================

    다이얼로그의 차일드 윈도우(activeX control) 생성시 죽는 문제인 것 같습니다.

    BOOL CDialog::Create(LPCTSTR lpszTemplateName, CWnd* pParentWnd)
    {
     ASSERT(HIWORD(lpszTemplateName) == 0 ||
      AfxIsValidString(lpszTemplateName));

     m_lpszTemplateName = lpszTemplateName;  // used for help
     if (HIWORD(m_lpszTemplateName) == 0 && m_nIDHelp == 0)
      m_nIDHelp = LOWORD((DWORD)m_lpszTemplateName);

    #ifdef _DEBUG
     if (!_AfxCheckDialogTemplate(lpszTemplateName, FALSE))
     {
      ASSERT(FALSE);          // invalid dialog template name
      PostNcDestroy();        // cleanup if Create fails too soon
      return FALSE;
     }
    #endif //_DEBUG

     HINSTANCE hInst = AfxFindResourceHandle(lpszTemplateName, RT_DIALOG);
     HRSRC hResource = ::FindResource(hInst, lpszTemplateName, RT_DIALOG);
     HGLOBAL hTemplate = LoadResource(hInst, hResource);
     BOOL bResult = CreateIndirect(hTemplate, pParentWnd, hInst);   <- 여기서 발생합니다.
     FreeResource(hTemplate);

     return bResult;
    }

    2010년 11월 18일 목요일 오전 5:57

모든 응답

  • 자답입니다.

    데브피아에 어떤분의 글을 보고 해결하였습니다.

    혹 저와같은 문제로 고생하시는 분이 있다면 좋은 정보가 되길 바랍니다.

    ---------------------------------------------------------------------------------

    http://www.devpia.com/MAEUL/Contents/Detail.aspx?BoardID=17&MAEULNO=8&no=104411&ref=104411

    CMD를 관리자모드로 여신후

    아래의 명령을 입력하신후 재부팅해보십시오.

    XP에서는 DEP설정이 가능했지만

    비스타나 7은 숨겨져 있습니다.

    아래는 사용하지 않는다는 표현이고

    인터넷으로 DEP 또는 bcdedit 검색하시면 참고 자료를 확인하실수 있습니다.

     

    bcdedit.exe /set {current} nx AlwaysOff  

     

    2010년 11월 18일 목요일 오전 11:18