使用ATL调用Dialog.DoModal在Windows CE 6.0上不起作用

时间:2014-09-26 12:29:44

标签: c++ dialog windows-ce atl

我们已经获得了Windows CE和Windows Mobile的应用程序。在此应用程序内部,如果按下工具栏中的按钮,则应显示对话框。 这非常适用于Windows CE 7和Windows Mobile 6.5.3,但出于某种原因,它无法在Windows CE 6.0上运行。我们正在使用ATL和WTL库来实现。

这是调用

的代码
LRESULT CMainWindow::OnSettings(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL      &bHandled) {    
    this->settingsWnd.DoModal(this->m_hWnd);
return S_OK;
}

我已经将它弄清楚了这个地方发生了错误。

它来自

  

ATL :: CAxDialogImpl:DoModal(HWND hWndParent,LPARAM dwInitParam)

结束

  

ATLINLINE ATLAPI_(INT_PTR)AtlAxDialogBoxW(HINSTANCE hInstance,LPCWSTR lpTemplateName,HWND hWndParent,DLGPROC lpDialogProc,LPARAM dwInitParam)

  

typename Helper :: ReturnType AtlAxDialogCreateT(HINSTANCE hInstance,StringType lpTemplateName,HWND hWndParent,DLGPROC lpDialogProc,LPARAM dwInitParam)

此后跟着电话

  

nRet =(* pFunc)(hInstance,lpDialogTemplate,hWndParent,lpDialogProc,dwInitParam);

返回-1,结果取消了调用。在另一个操作系统上,这不会发生。

有谁知道造成这种行为的原因是什么?

编辑10.10.14:这是我们在CE 7和ME 6.5.3上工作的资源脚本的除外

IDD_SETTINGS DIALOG  0, 0, 156, 169
STYLE DS_SETFONT | WS_POPUP | WS_CAPTION
CAPTION "Einstellungen"
FONT 8, "MS Sans Serif"
BEGIN
    CONTROL         "",IDC_TAB1,"SysTabControl32",0x0,7,7,142,137
    PUSHBUTTON      "Cancel",IDCANCEL,93,148,56,16
    DEFPUSHBUTTON   "OK",IDOK,7,148,56,16
END

IDD_SETTINGS_HP DIALOG  0, 0, 128, 119
STYLE DS_SETFONT | WS_CHILD
FONT 8, "Tahoma"
BEGIN
    EDITTEXT        IDC_HOMEPAGE,7,16,115,13,ES_AUTOHSCROLL
    EDITTEXT        IDC_TIMEOUT,88,33,34,13,ES_AUTOHSCROLL
    EDITTEXT        IDC_TRYTIMES,103,50,19,12,ES_AUTOHSCROLL | ES_NUMBER
    EDITTEXT        IDC_HOMEPAGE2,7,76,115,13,ES_AUTOHSCROLL
    EDITTEXT        IDC_HOMEPAGE3,7,102,115,13,ES_AUTOHSCROLL
    LTEXT           "Homepage (Main Server)",IDC_STATIC,7,6,80,8
    LTEXT           "Homepage (Backup Server 1)",IDC_STATIC,7,66,94,8
    LTEXT           "Homepage (Backup Server 2)",IDC_STATIC,7,92,94,8
    LTEXT           "Times to try before switching",IDC_STATIC,7,51,93,8
    LTEXT           "Connection Timeout (ms)",IDC_STATIC,7,35,80,8
END

1 个答案:

答案 0 :(得分:1)

使用InitCommonControlsEx(ICC_TAB_CLASSES)初始化选项卡控件。