问题1:
为了工程视图类中的OnDraw函数不可用,我把CView::OnPaint()中的代码全部注释起来,结果还是一样的正常显示(我在理解它的运行机制,所以不要误会有什么问题),问题出在哪?难道除了CView::OnPaint()函数可以响应WM_PAINT外,还有其他的一些途径?问题2:
1.我在查CWinApp中m_nCmdShow时,m_nShowWindow如果不指定确定的值,在程序启动时,通过看msdn发现原来在ShellExecute()指定了一个默认的值SW_SHOWNORMAL,这个函数在何时调用,如何调用?
2.在CreateProcess中也可以指定窗口显示的式样,程序启动也就是说会启动一个新的进程,这个函数何时调用,由谁调用?系统?
这两个程序CWinApp有没有关系?------------------------------------------------------------------------------------------------------------
分数不多,希望不吝指教,谢谢

解决方案 »

  1.   

    1 看深入浅出MFC 或者自己单步跟踪源码。
    2 双击图标的时候由explorer调用
      

  2.   

    1、
    CView派生类是在CFrameWnd::OnCreate()中动态创建的。
    你注释的地方,哎~~ 离真理差得太远了2、1.我在查CWinApp中m_nCmdShow时,m_nShowWindow如果不指定确定的值,在程序启动时,通过看msdn发现原来在ShellExecute()指定了一个默认的值SW_SHOWNORMAL,这个函数在何时调用,如何调用? 
    ===================================
    ???不知所云?CwinApp关ShellExecute什么事情?2.在CreateProcess中也可以指定窗口显示的式样,程序启动也就是说会启动一个新的进程,这个函数何时调用,由谁调用?系统? 
    =================================
    奇怪,谁的代码里面写了CreateProcess,不就是谁调用这个函数么????囧死,这什么问题啊这两个程序CWinApp有没有关系?
    ==================================
    一塌糊涂。都编译好了哪来的CWinApp,怎么能说CWinApp都关系???最多说进程有关系,可能是父子进程
      

  3.   

    问题1,你注释的CView::OnPaint()中的代码只是你自己一厢情愿以为被你注释掉了,执行的也是你注释掉的代码。其他不然。你执行的还是MFC原来的代码,因为你没有编译你修改过的CView::OnPaint()代码,生成一个新的MFC库。所以你程序中运行的还是原来的代码。问题2,没看明白。
      

  4.   

    1.rebuild一下项目就没有问题了.
    2.不是很明白你的意思,createprocess不可能能指定窗口样式的,因为有的Process不一定有窗口.................
      

  5.   

    你注释的是你子窗口的onpaint,其实窗口的基本界面都是在父类里面就画了的
      

  6.   


    昨天翻了一下windows核心编程,的确是以前的理解有问题,CreateProcess是在线程调用时创建的一个进程内核对象而不是进程本身
      

  7.   


    问题一感觉是这样的,但是我把MFC源代码注释起来,生成的新的MFC库还是以前的?我又有点糊涂了
      

  8.   


    我的意思是你编译不了那些MFC原来的代码。你不能生成新的MFC库。
      

  9.   


    我编译源文件的时候视图类是CView类的子类,我把父类的改变了应该会影响到子类吧,编译也该是修改后的啊
      

  10.   

    3楼正解
    深入浅出MFC
    or孙sir的书都有剖析
      

  11.   


    无语,楼主,请问MFC是什么?是一个类库。你用的CView也就是你修改的那个CView啊,是一个类库里面的类来的,你调用的是MFC***.lib(如果是VC6,就是mfc42.lib) 里面的东西,而不是你自以为是的自己修改了的源代码。你只是修改了代码,没有修改了这个类库。我就这个意思。