如果是非标准控件(ocx里面的),需要注册过才行。

解决方案 »

  1.   

    to jiangsheng:
    但我没有用其它的控件呀
      

  2.   

    不介意把代码给我,我帮你调试一下吧。 
    [email protected]
      

  3.   

    ASSERT(FALSE);//也就是这行出问题了改为: ASSERT(hWndCtrl!=NULL);试试。
      

  4.   

    倒~
    那是MFC的源代码!
      

  5.   

    to alphagx:
    好啊,先谢啦!我再调试一下,如果还不行我再把代码发给你
    因为这个程序还有需要比较多其它东西支持的,所以,你帮我调试的话可能要发挺多东西的to use_id:
    但这个是MFC源代码呀
      

  6.   

    这种代码是给别人方便调试的,对于当hwndctrl==NULL时,你应该做些处理.
      

  7.   

    自己Create一下看看行不行,不行就是控件注册的问题
      

  8.   


    别倒,倒了这个的问题怎么办..................我倒~~~~55555555555不知道是源码,一个无知的我呀..........ASSERT(FALSE);//也就是这行出问题了也是不懂........这一行又如何出错?
      

  9.   

    补:有关DataExchange的只有这一项啊
    DDX_Control(pDX, IDC_LIST1, m_ListCtrl);
      

  10.   

    m_ListCtrl?对话框上对应的ID是什么控件?
      

  11.   

    resource.h#define IDM_ABOUTBOX                    0x0010
    #define IDD_ABOUTBOX                    100
    #define IDS_ABOUTBOX                    101
    #define IDD_TONGSHIDEMO_DIALOG          102
    #define IDR_MAINFRAME                   128
    #define IDR_TOOLBAR1                    129
    #define IDR_MENU1                       131
    #define IDB_BITMAP1                     132
    #define IDC_HISTORY                     1009
    #define IDC_LIST1                       1010
    #define IDC_STATUSBAR                   32770
    #define ID_BUTTON32771                  32771
    #define ID_BUTTON32772                  32772
    #define ID_MENUITEM32773                32773
    #define ID_MENUITEM32774                32774// Next default values for new objects
    // 
    #ifdef APSTUDIO_INVOKED
    #ifndef APSTUDIO_READONLY_SYMBOLS
    #define _APS_NEXT_RESOURCE_VALUE        133
    #define _APS_NEXT_COMMAND_VALUE         32775
    #define _APS_NEXT_CONTROL_VALUE         1011
    #define _APS_NEXT_SYMED_VALUE           101
    #endif
    #endif
      

  12.   

    以下对话框初始化代码,不好意思代码写得很乱,有劳大家的眼睛啦,谢谢!BOOL CTongshiDemoDlg::OnInitDialog()
    {
    CDialog::OnInitDialog(); // Add "About..." menu item to system menu. // IDM_ABOUTBOX must be in the system command range.
    ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
    ASSERT(IDM_ABOUTBOX < 0xF000); CMenu* pSysMenu = GetSystemMenu(FALSE);
    if (pSysMenu != NULL)
    {
    CString strAboutMenu;
    strAboutMenu.LoadString(IDS_ABOUTBOX);
    if (!strAboutMenu.IsEmpty())
    {
    pSysMenu->AppendMenu(MF_SEPARATOR);
    pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
    }
    } // Set the icon for this dialog.  The framework does this automatically
    //  when the application's main window is not a dialog
    SetIcon(m_hIcon, TRUE); // Set big icon
    SetIcon(m_hIcon, FALSE); // Set small icon//此处设断点就不行了。    

    //******************************************************************
    if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP
    | CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||
    !m_wndToolBar.LoadToolBar(IDR_TOOLBAR1))
        {
    TRACE0("failed to create toolbar");
    }
    CRect rcClientStart;
        CRect rcClientNow;
        GetClientRect(rcClientStart);
        RepositionBars(AFX_IDW_CONTROLBAR_FIRST,
                         AFX_IDW_CONTROLBAR_LAST,
                         0, reposQuery, rcClientNow);
    CPoint ptOffset(rcClientNow.left - rcClientStart.left,
                           rcClientNow.top - rcClientStart.top);    CRect  rcChild;
        CWnd* pwndChild = GetWindow(GW_CHILD);
        while (pwndChild)
          {
             pwndChild->GetWindowRect(rcChild);
             ScreenToClient(rcChild);
             rcChild.OffsetRect(ptOffset);
             pwndChild->MoveWindow(rcChild, FALSE);
             pwndChild = pwndChild->GetNextWindow();
          }
        CRect rcWindow;
        GetWindowRect(rcWindow);
        rcWindow.right += rcClientStart.Width() - rcClientNow.Width();
        rcWindow.bottom += rcClientStart.Height() - rcClientNow.Height();
        MoveWindow(rcWindow, FALSE);
        RepositionBars(AFX_IDW_CONTROLBAR_FIRST,AFX_IDW_CONTROLBAR_LAST,0);//******************************************************************    
    int m_Widths[5];
    int nTotWide; // total width of status bar
    CRect rect;
        this->GetWindowRect(&rect);
    rect.top = rect.bottom- 25;
         BOOL m_bRvStatOk= m_StatBar.Create(WS_CHILD|WS_VISIBLE  ,rect,this,IDC_STATUSBAR);
             if(m_bRvStatOk == NULL)
    {  AfxMessageBox ("Status Bar not created!", NULL, MB_OK );    }
    CRect rWin;       this->GetWindowRect(&rWin);
        nTotWide = rWin.right-rWin.left;
    m_Widths[0] = 39;  //状态条第一部分的宽
        m_Widths[1] = (nTotWide-97)/3+39;  //状态条第一和二部分的总宽
        m_Widths[2] = (nTotWide-97)*2/3+39;   //以此类推
        m_Widths[3] = nTotWide-58;   //表示状态条最右边的部分
    m_Widths[4]=-1;
        m_StatBar.SetMinHeight(25);
    m_StatBar.SetParts( 5, m_Widths); 
    m_StatBar.SetText(NULL, 0,SBT_OWNERDRAW);
    m_StatBar.SetText("沪",1,0);
    m_StatBar.SetText("深",2,0);
    m_StatBar.SetText("创",3, 0);
    COleDateTime tm;
    tm=tm.GetCurrentTime();
    CString str;
    str.Format("%d:%02d:%02d",tm.GetHour(),tm.GetMinute(),tm.GetSecond());
    m_StatBar.SetText(str,4,0);
        SetTimer(1,1000,NULL);
    hBmp = ::LoadBitmap(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDB_BITMAP1));//******************************************************************
        TCHAR rgtsz[7][10] = {_T("股票名称"), _T("代码"), _T("昨收"), _T("今开"),_T("最高"),_T("最低"),_T("现价")}; LV_ITEM lvitem;
    LV_COLUMN lvcolumn;
    CRect rec;
    m_ListCtrl.GetWindowRect( &rec );

    // Insert columns using the order field
    int i;
    for(i = 0; i < 7; i++)  
    {
    lvcolumn.mask = LVCF_FMT | LVCF_SUBITEM | LVCF_TEXT | LVCF_WIDTH | LVCF_ORDER;
    lvcolumn.fmt = LVCFMT_LEFT;
    lvcolumn.pszText = rgtsz[i];
    lvcolumn.iSubItem = i;
    lvcolumn.iOrder = i;
    lvcolumn.cx = rect.Width() / 7;  
    m_ListCtrl.InsertColumn(i, &lvcolumn);  
    }

    m_fpShow=_fsopen("d:\\vsat\\show128.dbf","rb",SH_DENYNO);
    fseek(m_fpShow,0,SEEK_SET);
    fread(&m_tagShow,sizeof(sDBF25TAG),1,m_fpShow);
    shnum1=m_tagShow.nRecNum-1;
        SHOW128 show1;
        fseek(m_fpShow,m_tagShow.nHeadLen+m_tagShow.nRecLen,SEEK_SET);
    int iItem, iSubItem, iActualItem;
    char buffer1[9];
    char buffer2[7];
    char buffer3[9];
    char buffer4[9];
    char buffer5[9];
    char buffer6[9];
    char buffer7[9];
    for (iItem = 0; iItem < m_tagShow.nRecNum-1; iItem++)  // will now insert the items and subitems into the list view.
    {

    fread(&show1,sizeof(SHOW128),1,m_fpShow);

            StrCopy(buffer1,show1.name,8);
        StrCopy(buffer2,show1.code,6);
    StrCopy(buffer3,show1.close,8);
    StrCopy(buffer4,show1.open,8);
    StrCopy(buffer5,show1.phigh,8);
    StrCopy(buffer6,show1.plow,8);
    StrCopy(buffer7,show1.pnew,8);

    memcpy(&show[iItem],&show1,sizeof(SHOW128));
    for (iSubItem = 0; iSubItem < 7; iSubItem++)
    {
    lvitem.mask = LVIF_TEXT | (iSubItem == 0? LVIF_IMAGE : 0);
    lvitem.iItem = (iSubItem == 0)? iItem : iActualItem;
    lvitem.iSubItem = iSubItem;
    lvitem.iImage = NULL;

    switch(iSubItem)
    {
    case 0:
    lvitem.pszText=buffer1;break;
    case 1:
    lvitem.pszText=buffer2;break;
    case 2:
    lvitem.pszText=buffer3;break;
    case 3:
    lvitem.pszText=buffer4;break;
    case 4:
    lvitem.pszText=buffer5;break;
    case 5:
    lvitem.pszText=buffer6;break;
    case 6:
    lvitem.pszText=buffer7;break;
    default:
    break;
    } if (iSubItem == 0)
    iActualItem = m_ListCtrl.InsertItem(&lvitem);
    else
    m_ListCtrl.SetItem(&lvitem);
    }
    }
    //******************************************************************
    m_fpHq=_fsopen("d:\\vsat\\z_hq.dbf","rb+",SH_DENYNO);
    fseek(m_fpHq,0,SEEK_SET);
    fread(&m_tagHq,sizeof(sDBF25TAG),1,m_fpHq);
    sznum1=m_tagHq.nRecNum;
    fseek(m_fpHq,m_tagHq.nHeadLen,SEEK_SET);
    for(int ii=0;ii<m_tagHq.nRecNum;ii++)
    {
    fread(&szhq[ii],sizeof(SZHQ),1,m_fpHq);
    }

    //*****************************************************************
    int ok=gStockDll.Stock_Init(AfxGetMainWnd()->m_hWnd,WM_STOCKDATA,RCV_WORK_SENDMSG);
    if(ok>0)
    {
    char szTitle[10];
    CString str;
    str.Format("通视接口测试(客户号:%08lX)",gStockDll.GetStockDrvInfo(RI_IDCODE,szTitle));
        SetWindowText(str);
    // m_bRunFlag=TRUE;

    }
    else
    {
    MessageBox("通视驱动未加载!");
    }
        

    // TODO: Add extra initialization here

    return TRUE;  // return TRUE  unless you set the focus to a control
    }
      

  13.   

    你在DoDataExchange(..)函数中检查一下你的listbox 的ID号是否已经更改--与资源是否相同,或者在DataExchange中写如下代码:CWnd *wnd=GetDlgItem(ID号)检查一下ID号wnd是否正确--------很有可能是你的已经改变了;
      

  14.   

    没有看到DoDataExchange啊,这些没有用……
    还有RC呢?
      

  15.   

    你在2000下对IDC_LISTCTRL在工程路径里全部搜索一下,看看是不是发生了什么冲突的情况