菜鸟提的简单问题,大家快来抢分呀!

时间:2022-09-30 16:50:21
   本菜鸟在看候哥的深入浅出第三章的时候,遇到个小问题,请各位大虾帮帮忙!

这是第三章第二个程序,学习程序执行顺序的,我加了一句.
void main()
{

CWinApp* pApp = AfxGetApp();

pApp->InitApplication();
pApp->InitInstance();
//下面这句是我加的测试语句
printf("test\n");
pApp->Run();
}

    结果显示是test在最前面,而InitApplication();和InitInstance();里都有打印字符串的语句,但结果却在test的后面显示出来,这是为什么?我不管把这条test语句放在main的什么地方结果都是这样!而我用断点来测试,显示执行顺序是没有错误的,只是前面三句执行的时候都没有显示东西,printf("test\n")则直接显示出来了.
    请问这是为什么,它们的执行顺序到底是怎么样的,请大虾们给本菜鸟提个醒,俺加分给您!!!
  

16 个解决方案

#1


猴哥的书我没看过,所以具体怎么回事也不清楚。你试着跟踪到InitInstance中看一下

#2


这说明前两个函数都不是阻塞的,这样printf才会在它们调用输出之前执行到。

#3


to luxes:

什么意思? 不懂! 什么是阻塞的? 到底怎么回事情?

#4


为什么还没有人回答我的问题? 这个问题很复杂吗?

#5


printf("test\n");
pApp->Run();
把这两条语句对调一下;看看先,
不行就想想
pApp->InitApplication();
pApp->InitInstance();
这两条里面用的什么写的?
也改成printf();
再不行你把你的机器杂烂,一定可以搞定!(电脑说:别打了,别打了,我招……我招就是了……)

#6


to AntGhazi: 
   我对调了呀,我不是说过了吗,我把"printf("test")放在哪儿都一样,都是这个结果!!

   InitApplication()里面有 .TextOut(" dfasdf")等语句的

#7


就是说,你的程序启动线程以后(pApp->InitApplication();pApp->InitInstance();),main里的代码还在网下走,先走到printf.而这时线程里的代码printf还没有执行到。
你加个Sleep(200)在Main里的Printf前看看效果吧

#8


在你调CWinApp::Run前,你的程序还没有建立消息循环,所以不能处理消息,你用TextOut写 的东西都要等到窗口重画时才显示出来!

#9


窗口重画是由WM_PAINT消息驱动的

#10


我同意vcbear和luxes的说法.老兄.不要老记着dos下的程序模式.

#11


这个程序就是在consle模式下模拟MFC工作原理的,没有重画窗口的动作的,程序是从侯哥站点下载的,你们应该都研究过的吧?
    可是我把run的语句注释掉了,还是一样的问题,还是printf语句的东西先出来,不会是我的机器的毛病吧?

#12


为什么呀为什么????????????

#13


因为你看错了

#14


?????????????????????????????

#15


75115关注!

#16


28812关注!

#1


猴哥的书我没看过,所以具体怎么回事也不清楚。你试着跟踪到InitInstance中看一下

#2


这说明前两个函数都不是阻塞的,这样printf才会在它们调用输出之前执行到。

#3


to luxes:

什么意思? 不懂! 什么是阻塞的? 到底怎么回事情?

#4


为什么还没有人回答我的问题? 这个问题很复杂吗?

#5


printf("test\n");
pApp->Run();
把这两条语句对调一下;看看先,
不行就想想
pApp->InitApplication();
pApp->InitInstance();
这两条里面用的什么写的?
也改成printf();
再不行你把你的机器杂烂,一定可以搞定!(电脑说:别打了,别打了,我招……我招就是了……)

#6


to AntGhazi: 
   我对调了呀,我不是说过了吗,我把"printf("test")放在哪儿都一样,都是这个结果!!

   InitApplication()里面有 .TextOut(" dfasdf")等语句的

#7


就是说,你的程序启动线程以后(pApp->InitApplication();pApp->InitInstance();),main里的代码还在网下走,先走到printf.而这时线程里的代码printf还没有执行到。
你加个Sleep(200)在Main里的Printf前看看效果吧

#8


在你调CWinApp::Run前,你的程序还没有建立消息循环,所以不能处理消息,你用TextOut写 的东西都要等到窗口重画时才显示出来!

#9


窗口重画是由WM_PAINT消息驱动的

#10


我同意vcbear和luxes的说法.老兄.不要老记着dos下的程序模式.

#11


这个程序就是在consle模式下模拟MFC工作原理的,没有重画窗口的动作的,程序是从侯哥站点下载的,你们应该都研究过的吧?
    可是我把run的语句注释掉了,还是一样的问题,还是printf语句的东西先出来,不会是我的机器的毛病吧?

#12


为什么呀为什么????????????

#13


因为你看错了

#14


?????????????????????????????

#15


75115关注!

#16


28812关注!