没有合适的资源?快使用搜索试试~ 我知道了~
vc知识技巧.doc(自己整理)
需积分: 0 2 下载量 93 浏览量
2010-04-01
13:45:59
上传
评论
收藏 79KB DOC 举报
温馨提示
试读
11页
看了不少vc知识技巧后,整理的一些有用或常用的知识。(目前整理了一部分,还有很多没来得及整理),过段时间继续整理。
资源详情
资源评论
资源推荐
应用控制
如何获得应用程序的实例句柄?
应用程序的实例句柄保存在 CWinApp m_hInstance 中,可以这么调用 AfxGetInstancdHandle 获得句
柄.Example: HANDLE hInstance=AfxGetInstanceHandle()
获得应用程序主窗口的指针?
主窗口的指针保存在 CWinThread::m_pMainWnd 中,调用 AfxGetMainWnd 实现。
$AfxGetMainWnd() ->ShowWindow(SW_SHOWMAXMIZED)//使程序窗口最大化.
如何编程结束应用程序?
向窗口发送 WM_CLOSE 消息,调用 CWnd::OnClose 成员函数.
怎样加载其他的应用程序?
三个 SDK 函数 winexec, shellexecute,createprocess 可以使用。
获得应用程序的路径?
GetModuleFileName 获得应用程序的路径,然后去掉可执行文件名。
$Example:
$TCHAR exeFullPath[MAX_PATH] // MAX_PATH 在 API 中定义了吧,好象是 128
$GetModuleFileName(NULL,exeFullPath,MAX_PATH)
获得各种目录信息?
Windows 目录: Use "GetWindowsDirectory"
Windows 下的 system 目录: Use "GetSystemDirectory"
temp 目录: Use "GetTempPath"
当前目录: Use "GetCurrentDirectory"
请注意前两个函数的第一个参数为目录变量名,后一个为缓冲区后两个相反.
MessageBox 和 AfxMessageBox 使用?
MessageBox 函数来自 CWnd 类,所以你只能在从 CWnd 继承的类( 如 CView )中调用它。但是,
MFC 也提供了 AfxMessageBox 函数,你可以在任何地方调用它。
虚拟函数 PreCreateWindow 是干什么用的?
PreCreateWindow 允许你在调用 CreateWindow 之前来改变窗口属性
在 PreCreateWindow 函 数 中 删 除 FWS_PREFIXTITLE 标 志 的 窗 口 样 式 : cs.style &=
~FWS_PREFIXTITLE; 在 PreCreateWindow 函数中删除 FWS_PREFIXTITLE 标志的窗口样式:
cs.style &= ~FWS_PREFIXTITLE;
在 PreCreateWindow 函 数 中 删 除 FWS_ADDTOTITLE 标 志 的 窗 口 样 式 : †cs.style &=
~FWS_ADDTOTITLE;防止 MFC 在窗口标题栏上添加文档名
如何删除 ClassWizard 创建的类?
在 ClassWizard 对话框关闭后,用文件管理器删除新类的 H 和 CPP 文件。然后打开 ClassWizard,
它会提示丢失了两个文件,并询问你该如何做。你可以选择从项目中删除这两个问的按钮。
窗口
窗口最大最小化按纽的控制?
① 怎样在程式开始的时候让他最大化?
v② C++做出来的 exe 文档在窗体的右上方是没有最大化和最小化按钮的,怎样实现这一功能?
③ 如何在显示窗口时,使最大化按钮变灰?
① 在 App 类 里 的 C…App::InitInstance() 中 把 m_pMainWnd->ShowWindow(SW_SHOW) 改 成
m_pMainWnd->ShowWindow(SW_MAXIMIZE);
② 在 CreateWidnow 时用 WS_SYSMENU|WS_MINIMIZEBOX|WS_MAXIMIZEBOX 风格.
③ 第一种方法:
BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
{
if( !CFrameWnd::PreCreateWindow(cs) )
return FALSE;
// TODO: Modify the Window class or styles here by modifying
//$$ the CREATESTRUCT cs
// disable the maxmini box
cs.style &= ~WS_MAXIMIZEBOX;
return TRUE;
}
第二种方法:
CMenu *pMenu=AfxGetApp()->m_pMainWnd->GetSystemMenu(FALSE);
$$$$$ int x=pMenu->GetMenuItemCount( );
$$$$ UINT pID=pMenu->GetMenuItemID(x-1);
$$$$$ pMenu->EnableMenuItem(pID, MF_DISABLED);
第三种方法:
ModifyStyle(WS_MAXIMIZEBOX, 0);
这个函数也能够是最大化按钮失效!
并且能够在程式中动态的改变窗口的风格
如何改变窗口的图标?
向窗口发送 WM_SECTION 消息。
$Example:
$HICON hIcon=AfxGetApp() ->LoadIcon(IDI_ICON)
$ASSERT(hIcon)
$AfxGetMainWnd() ->SendMessage(WM_SECTION,TRUE,(LPARAM)hIcon)
如何将窗口居中显示?
CWnd::CenterWindow()
如何让窗口和 MDI 窗口一启动就最大化和最小化?
$在 InitStance 函数中设定 m_nCmdShow 的取值.
$m_nCmdShow=SW_SHOWMAXMIZED //最大化
$m_nCmdShow=SW_SHOWMINMIZED //最小化
$m_nCmdShow=SW_SHOWNORMAL //正常方式
如何使窗口始终在最前方?
$SetWindowPos 函数,指定窗口的 最顶风格,用 WS_EX_TOPMOST 扩展窗口的风格
移动窗口?
调用 CWnd : : SetWindowPos 并指定 SWP_NOSIZE 标志。目的位置与父窗口有关(顶层窗口与屏
幕有关)。调用 CWnd : : MoveWindow 时必须要指定窗口的大小。
重置窗口的大小?
调用 CWnd: : SetWindowPos 并指定 SWP_NOMOVE 标志, 也可调用 CWnd : : MoveWindow 但必
须指定窗口的位置。
如何改变窗口标题?
调用 CWnd : : SetWindowText 可以改变任何窗口(包括控件)的标题
怎样才能使一个窗口具有“always on top”特性?
在调用 OnFileNew 后,在你的 InitInstance 函数中加上下面的代码:
m_pMainWnd->SetWindowPos(&CWnd::wndTopMost,0,0,0,0, SWP_NOMOVE | SWP_NOSIZE);
获取窗口尺寸?
GetClientRect()
我打开应用程序中的窗口时,要传递该窗口的矩形尺寸。该矩形指定了窗口的外围大小,但是当
我调用 GetClientRect 时,所得到的尺寸要比所希望的值要小(因为工具栏和窗口边框的缘故)。有
其它方法来计算窗口的尺寸吗? CWnd::CalcWindowRect。
如何将应用程序窗口置于屏幕正中?
要 将 你 的 应 用 程 序 窗 口 放 置 在 屏 幕 正 中 央 , 只 须 在 MainFrame 的 OnCreate 函 数 中 加
入:CenterWindow( GetDesktopWindow() );
如何控制窗口框架的最大最小尺寸?
要控制一个框架的的最大最小 尺寸 ,你需要做两件 事情 . 在 CFrameWnd 的 继承类中 处理消息 WM_GETMINMAXINFO, 结构
MINMAXINFO 设置了整个窗口类的限制,因此记住要考虑工具条,卷动条等等的大小.
// 最大最小尺寸的象素点 - 示例
#define MINX 200
#define MINY 300
#define MAXX 300
#define MAXY 400
void CMyFrameWnd::OnGetMinMaxInfo(MINMAXINFO FAR* lpMMI)
{
$$$$CRect rectWindow;
$$$$GetWindowRect(&rectWindow);
$$$$CRect rectClient;
$$$$GetClientRect(&rectClient);
$$$$$$// get offset of toolbars, scrollbars, etc.
剩余10页未读,继续阅读
muyiyj
- 粉丝: 20
- 资源: 12
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0