VC菜瓜一个……
多个基础问题:
我用CreateThread建立了一个线程函数用来循环操作,为了方便操作我用MFC Dialog框架,为了方便我将建立线程,线程执行函数等一系列操作全部放到了了一个类中,名叫CThreadClass。
即我所有的类为CAboutDlg,CMyDialogApp,CMyDialogDlg,和CThreadClass。问题一:此时,我打算在CMyDialogDlg类中建立一个按钮,点下按钮即可执行CThreadClass内的创建线程,线程执行等操作。我在CMyDialogDlg类中定义了一个CThreadClass的对象 test。之后在按钮的响应函数处添加test.StartThread("aaa");//此处为CThreadClass启动线程的函数。如果是这样,我的程序编译通过,但是退出程序时候会报错Debug Assertion Failed!,如果在按钮的响应函数处定义这个test,则没有此问题!为何?问题二(★★首要问题★★):如上所述,我在CThreadClass类中定义了所有的关于线程的函数,但是我需要传递给CMyDialogDlg中的控件变量,即我要让线程运行的结果随时显示在Dialog上,那么我将如何去做?(即线程函数声明为CThreadClass的静态成员函数,我如何处理与CMyDialogDlg之间的实时传递数据?)(如果用到消息,能否写具体些,我已经乱了……)问题三:我使用CreateThread创建线程,线程函数的参数是一个LPVOID lpParam,任意即32位无符号数,那么我如何通过这个传递CString?我尝试创建一个指针传递,但是跟踪结果是错误的!(我现在使用全局变量当参数~)。问题四:看过一段别人写的程序,程序的资源部分用Static充当了一个字符串输出的功能。查看ClassWizard,发现定义了一个CString,可如何定义这个呢?(双击实在是不管用:()以上的问题,我思考了好一阵子,都不知道怎么做,找书也找不到,找不全。还望高人指点一下,能否说的详细一些?奉上我所有的分数,谢谢了!(分数实在已经没了!)
多个基础问题:
我用CreateThread建立了一个线程函数用来循环操作,为了方便操作我用MFC Dialog框架,为了方便我将建立线程,线程执行函数等一系列操作全部放到了了一个类中,名叫CThreadClass。
即我所有的类为CAboutDlg,CMyDialogApp,CMyDialogDlg,和CThreadClass。问题一:此时,我打算在CMyDialogDlg类中建立一个按钮,点下按钮即可执行CThreadClass内的创建线程,线程执行等操作。我在CMyDialogDlg类中定义了一个CThreadClass的对象 test。之后在按钮的响应函数处添加test.StartThread("aaa");//此处为CThreadClass启动线程的函数。如果是这样,我的程序编译通过,但是退出程序时候会报错Debug Assertion Failed!,如果在按钮的响应函数处定义这个test,则没有此问题!为何?问题二(★★首要问题★★):如上所述,我在CThreadClass类中定义了所有的关于线程的函数,但是我需要传递给CMyDialogDlg中的控件变量,即我要让线程运行的结果随时显示在Dialog上,那么我将如何去做?(即线程函数声明为CThreadClass的静态成员函数,我如何处理与CMyDialogDlg之间的实时传递数据?)(如果用到消息,能否写具体些,我已经乱了……)问题三:我使用CreateThread创建线程,线程函数的参数是一个LPVOID lpParam,任意即32位无符号数,那么我如何通过这个传递CString?我尝试创建一个指针传递,但是跟踪结果是错误的!(我现在使用全局变量当参数~)。问题四:看过一段别人写的程序,程序的资源部分用Static充当了一个字符串输出的功能。查看ClassWizard,发现定义了一个CString,可如何定义这个呢?(双击实在是不管用:()以上的问题,我思考了好一阵子,都不知道怎么做,找书也找不到,找不全。还望高人指点一下,能否说的详细一些?奉上我所有的分数,谢谢了!(分数实在已经没了!)
thisApp=AfxGetApp();
CMyDialogDlg *dlgWnd=(CMyDialogDlg *)thisApp->GetMainWnd();
此时dlgWnd即为CMyDialogDlg的指针.对于问题4 创建线程用的函数是一个CallBack函数,所以他必须是一个静态或全局函数.又: 不建议象你这样创建线程,最好先创建线程对象,再创建线程.(用AfxBeginThread)
问题二:你把CMyDialogDlg实例的指针当作线程参数传入
问题三:你把CString实例的地址传进去就行了,只要该实例在生存期内,一般不会出错
问题四:你改一下相应空间的id,即不用ID_STATIC,然后你就能定义对应该控件的变量了
CMyDialogDly的实例的指针是指这个么:CMyDialogDlg *pDialog,这个是我的对话框的类啊?能么?(这问题太傻了~呵呵)
我试试,呵呵。
发送消息,给指定的函数去处理,令这些函数在Dlg类中。