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毫秒