hur.cn - 华软网

 热门搜索

Tab Ctrl控件相关问题

  作者:未知    来源:网络    更新时间:2011/1/14
现在做的项目中用到了tab ctrl控件,新建了两个对话框 例如:IDD_DIALOG1,IDD_DIALOG2,并给这2个对话框建立了两个类,假定是sssss1和sssss2好了,我在类sssss1下写了一个下载功能,然则每次都在openURL的时候犯错,然则一样的代码放在不运用tab ctrl控件的工程中就能够正常运用。以下是下载功能在打开url之前的代码,有高手帮诊疗下究竟是什么问题
CMessageList    dlg;
CWnd* pwnd = AfxGetMainWnd();
CProgressCtrl* m_Prog = (CProgressCtrl*)pwnd->GetDlgItem(IDC_PROGRESS1);
CButton* bStart = (CButton*)pwnd->GetDlgItem(IDB_BTN_START);
char filebuf[1024];
CInternetSession netSession;
CStdioFile *fTargFile;
int outfs;
CString FileSize,KBin,KBsec,NewName,Perc;
CString m_UrlMessage;
CString m_UserNum;//用户许可号
CString URL;

try
{
CString szPath = "e:\\Image\\"; 
CreateDirectory(szPath,NULL);  //在e盘创建一个为image的空资料夹
pwnd->GetDlgItemText(IDC_MESSAGE,m_UserNum);
fTargFile = netSession.OpenURL(m_UserNum,1,INTERNET_FLAG_TRANSFER_BINARY |INTERNET_FLAG_RELOAD);
---华软 网友回答---
(CProgressCtrl*)pwnd->GetDlgItem(IDC_PROGRESS1);
你这个IDC_PROGRESS1控件到底在哪一个界面上?是主窗口,照旧主窗口上的TAB CTRL控件的子窗口上?
---华软网友回复---
引用 1 楼 happyparrot 的回复:
(CProgressCtrl*)pwnd->GetDlgItem(IDC_PROGRESS1);
你这个IDC_PROGRESS1控件到底在哪一个界面上?是主窗口,照旧主窗口上的TAB CTRL控件的子窗口上?

TAB CTRL 控件的子窗口
---华软网友回复---
报啥毛病
---华软网友回复---
OpenURL 第一个参数不是URL?
---华软网友回复---
引用 3 楼 tigermaydo 的回复:
报啥毛病

URL地址毛病,所以我怀疑是打开url那有问题,然则一样的代码放在其余不用TAB CTRL控件的工程内,就没有这个问题。我一起头是怀疑我的EDIT框体ID重复了,致使程序以为输入的有问题,所以把所有EDIT的ID都重新换了一遍。然则问题依旧。所以我想是否是TAB CTRL控件那里我用的不对
---华软网友回复---
引用 2 楼 dmmstx 的回复:
引用 1 楼 happyparrot 的回复:
(CProgressCtrl*)pwnd->GetDlgItem(IDC_PROGRESS1);
你这个IDC_PROGRESS1控件到底在哪一个界面上?是主窗口,照旧主窗口上的TAB CTRL控件的子窗口上?

TAB CTRL 控件的子窗口

那你这类写法,基本不可能获得这个进度条的对象啊。你是从主窗口上去找,可这个进度条是在你TAB CTRL的子窗口上,前往值那必然是空的。你的程序也不可能能用
---华软网友回复---
支持楼上
---华软网友回复---
引用 6 楼 happyparrot 的回复:
引用 2 楼 dmmstx 的回复:
引用 1 楼 happyparrot 的回复:
(CProgressCtrl*)pwnd->GetDlgItem(IDC_PROGRESS1);
你这个IDC_PROGRESS1控件到底在哪一个界面上?是主窗口,照旧主窗口上的TAB CTRL控件的子窗口上?

TAB CTRL 控件的子窗口

那你这类写法,基本不可能获得这个进度条的对象啊。你是从……

那该如之奈何。。。如何猎取子窗口上的进度条对象呢?这个只是猎取进度条的对象,如果有错,不是只猎取不到进度条么?対我整个下载都有影响?
---华软网友回复---
既然获得了pwnd,那么自然能够通过pwnd获得TAB CTRL控件对象,再通过TAB CTRL获得其子窗口上的对象。这么逐层措置惩罚,自然能找到。
当然,最主要的照旧你的程序结构太差所致。
---华软网友回复---
引用 9 楼 happyparrot 的回复:
既然获得了pwnd,那么自然能够通过pwnd获得TAB CTRL控件对象,再通过TAB CTRL获得其子窗口上的对象。这么逐层措置惩罚,自然能找到。
当然,最主要的照旧你的程序结构太差所致。

麻烦能告诉下如何获得TAB CTRL控件对象么。试了下没成功。。
刚入行1个多月。。水平实在有限。。
---华软网友回复---
麻烦高手指点下
---华软网友回复---
CTabCtrl *m_tabctrl = (CCTabCtrl*)pwnd->GetWindow(IDD_XXXX,GW_CHILD);
是这样么??
---华软网友回复---
你为什么总喜欢去Get呢?你能够在主窗口中为控件定义一个成员变量啊。用ClassWizard就能够。然后pwnd就能够直接访问到TAB控件对象了      
华软声明:本内容来自网络,如有侵犯您版权请来信指出,本站立即删除。