Programming 版 (精华区)

作  家: compus (蓝天) on board 'programming'
题  目: mfc-1
来  源: 哈尔滨紫丁香站
日  期: Sun Aug 10 12:20:02 1997
出  处: compus.bbs@bbs.net.tsinghua.edu.cn

有关本文∶
    本文收集了本版有关Visual C++中MFC编程方面的有关问题,内容参见概览。

苗扬 于1996.6.26

--------------------------------------------------------------------------
概览

 1. 怎样让MFC的TOOLBAR上的按钮上象WORD 6.0那样出小旗子? 
 2. 如何使用GDI绘制的Bitmap?
 3. VC如何去掉mainframe菜单?
 4. 如何在FORMVIEW中生成CBitmpButton 按钮?
 5. 有关多线程?
 6. 如何通过窗口的Title得到其Handle?
 7. 用VC制作多文档界面时如何使文档一生成就最大化?
 8. 如何截获对DLL的调用?
 9. 如何用CPropertySheet作 为VIEW?
10. VC的Status Bar高度能设吗?
---------------------------------------------------------------------------

--------------------------------------------------------------------------
发信人: ming (剑胆琴心), 信区: Program
标  题: Re: MFC

==> billybear (比利熊) 提到:
> 怎样让MFC的TOOLBAR上的按钮上象WORD 6.0那样出小旗子? 自己改

在 CMyWinApp::OnIdle() 中 判断鼠标位置, 在ToolBar上时显示一个 Popup 窗口
就行了。不一定要直接修改MFC的源码。我自己就实现过,不麻烦。

VC++ 2.0 以后的类库已经实现,但VC++2.0 只能用于 32Bit 程序开发。
我不知道有没有更新的16Bit 的MFC类库。如谁知道,告诉我一声。

----------------------------------------------------------------------------
发信人: sorrow (伤心小箭), 信区: Program
标  题: Re: 如何使用GDI绘制的Bitmap?

==> oldmouse (大白鼠) 提到:
> 我用GDI函数绘制了一幅大图画,使用CScrolView显示,想加快速度避免重绘,使用

> 一CBitmap指针存储,总是出错,请赐教。

        用兼容设备上下文试一试.
        1) 创建一个与CScrolView设备上下文兼容的设备上下文
        2) 创建一个ScrolSize大小的兼容位图
        3) 将兼容位图选入兼容设备上下文
        4) 用GDI函数在兼容设备上下文绘制
        5) 需重绘时用BITBLT函数将兼容设备上下文的位图映射到CScrolView所在的
           设备上下文上.

==> zyy (笑天) 提到:
> 谁知道:
>         WINDOWS位图颠倒存储和显示是出于什么目的?
>         怎么样才能由上至下地显示一幅图象?能不能不颠倒?用SETDIBTODEVICE行吗?

        是出于用户坐标系的原因.
        用SETDIBTODEVICE可以,但仍需要注意位图的坐标系与DEVICE坐标系的区别.

==> bearcat (熊猫) 提到:
> 我想在用VC++1.5编程时,new一个[512][512]的大数组,却总是不行.
> 哪位专家可以指点一下.

        这样的做法并不十分好,要分配如此大的内存最好用全局的内存分配函数.
        直接用指针操作,效率也会提高.

--------------------------------------------------------------------------
发信人: tsai (小菜), 信区: Program
标  题: Re: VC如何去掉mainframe菜单

==> whm (民子) 提到:
>      第500号档案:
>      VC 编程疑问:
>      IDR_mainframe是缺省的菜单,如何才能使程序不使用任何菜单,
> 而用formview 的面版控制。
跳过MFC的一套东西,在InitInstance()成员函数里直接调用
CMydialog dlg;
dlg.DoModal ;
CMydialog dlg;
dlg.DoModal ;

以此对话框作为主界面.

在VC2中可以在APPWIZARD里选“DIALOG BASED APPLICATION”。

--------------------------------------------------------------------------    .
                                                                              .

发信人: sorrow@SMTH (伤心小箭), 信区: Program
标  题: Re: 如何在FORMVIEW中生成CBitmpButton 按钮

==> whm (民子) 提到:

> 我用VC1.0 ,需以FormView 中生成CBitmapButton 按钮,通常CBitmaoButton
> 是在CDialog 中在InitDialog()中用CBitmapButton.AutoLoad()装入,但CBipmapButto.
>
没有类次成员,我在构造函数中调用CBitmapButton.AutoLoad()会死机,按CBitmapBut
的> 提示使用Create()+LoadBitmaps()却不成功。
> 希望各位能帮帮忙。
> 另:如何在RC中产生picture的显示,即将一幅PICTURE作为底画(比ICON要大得多).

  在CFormView 中产生CBitmapButtom:
        例如要生成一个OPEN和一个SAVE的CBitmapButtom,可按如下方法:

          class CMainWindow : public CFrameWnd
          {
                private:
                    CBitmapButtom m_OpenButtom;
                    CBitmapButtom m_SaveButtom;
                    CBitmapButtom m_SaveButtom;
                public:
                        ......
          };

          int CMainWindow : OnCreate(LPREATESTRUCT)
          {
                CRect rect;
                rect.SetRect(4,4,36.36);
                m_OpenButtom.Create(NULL, WS_CHILD | WS_VISIBLE |
BS_OWNERDRAW,
                               rect, this, IDB_OPEN);
                m_OpenBittom.LoadBitmap("OPENU","OPEND");

                // m_SaveButtom 如上

                。。。。。。。
                return 0;
          }

                ......

          BEGING_MESSAGE_MAP(CMainWindow, CFromView)
                 .

                ......

          BEGING_MESSAGE_MAP(CMainWindow, CFromView)
                 .
              ON_BN_CLICKED (IDB_OPEN, OnOpen)
                 .
                 .
          END_MESSAGE_MAP()

        //如果以上方法不行请检查你的BITMAP 资源,APPSTUDIO中,"OPENU"和
        // "OPEND" 等的资源名称都是需要用引号引起来的, LoadBitmap不成功
        // "OPEND" 等的资源名称都是需要用引号引起来的, LoadBitmap不成功
        // 很可能就是由此产生的。
        // AutoLoad的用法下次再POST出来

------------------------------------------------------------------------------.

发信人: Falcon@SMTH (狐儿), 信区: Program
标  题: Re: 谁用过多线程?

==> jyj@SMTH (蚍蜉) 提到:
> 我在Win95下用VC4想做多线程,可就是不对,子线程执行之后主线程就
> 被挂起来了(事实上它会对第一个事件反应,然后就没反应了)。
> 哪位高手能指点一二? 多谢!
不可能吧, 你是用AfxBeginThread生成一个worker thread, 还是继承CWinThread
的user thread, 这两种我都用过,一点问题都没有. 你得再仔细查查.

多谢!
我犯了个很大的错误,在worker thread中进行了窗口输出,所以不对了。
现在老老实实的发消息给主线程让它去做显示,就没问题啦!

------------------------------------------------------------------------------.
---
发信人: Tintori@SMTH (落寞狂徒 信区: Program
标  题: Re: 如何通过窗口的Title得到其Handle?

FindWindow()就可以啊!

------------------------------------------------------------------------------.
---
发信人: sorrow@SMTH (伤心小箭), 信区: Program
标  题: Re: MDI文档

==> winman@SMTH (雪茄3笳大) 提到:
> 请问: 用VC制作多文档界面时如何使文档一生成就最大化?

    如果你用的是VC4.0,那么只要在CREATE时在ADVANCE中选择MDI->MAXIMIZED.
    如果你用的是VC1.5,那么就在视类重载的OnInitUpdate成员函数中加上:

        CMDIChildWnd *pWnd=(CMDIChildWnd *)GetParentFrame();
        pWnd->MDIMaximize();

------------------------------------------------------------------------------.
---
发信人: ming@SMTH (明明), 信区: Program
标  题: Re: 如何截获对DLL的调用

==> Dannel@SMTH (铁布衫) 提到:
> 各位高手:
> Windows编程中,能否截获应用程序对DLL中函数的调用?如果能,如何办?

得到DLL中函数的指针后,修改代码段代码,跳向你自己的函数,不就可以吗?

> 作为第三方程序,如何获得第一方Application对第二方DLL调用的函数的指针?
> Hook 只能截获Message吧。

我没说用 Hook 啊,而是象中文之星之类的程序一样 直接改需要截获的DLL函数的代码。

------------------------------------------------------------------------------.

发信人: walklooktalk@SMTH (走走看看说说), 信区: Program
标  题: Re: CPropertySheet

==> zhanghan@SMTH () 提到:
> VC 中如何用CPropertySheet作 为VIEW?

不要用“APP WIZARD”,自己建立框架,以CPropertySheet 为主窗口,
可以参考“VISUAL C++ 技术内幕”最前面部分,有说明。
在MFCEXT.HLP中有这部分扩充类的帮助。
                                                                              .

------------------------------------------------------------------------------.

发信人: Tintori@SMTH (落寞狂徒~摆渡人的舟), 信区: Program
标  题: Re: VC的Status Bar高度能设吗?

==> GoodBilly@SMTH (Billy) 提到:
>         Tool Bar 的高度可以设置,Status Bar呢?
从CStatusBar中派生一个自己的类。在构造函数中改变高度(具体的成员变量
我忘记了,看看MFC的源代码就知道了)


--
※ 来源:·哈尔滨紫丁香站 bbs1.hit.edu.cn·[FROM: compus.bbs@bbs.net.t] 
[百宝箱] [返回首页] [上级目录] [根目录] [返回顶部] [刷新] [返回]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:5.619毫秒