VC编程常见问题集锦
来源:互联网 发布:js 文本框中数值 合计 编辑:程序博客网 时间:2024/05/22 15:28
为什么即使调用EnableMenuItem菜单项后,菜单项还处于禁止状态?
需要将CFrameWnd:: m_bAutomenuEnable设置为FALSE,如果该数据成员为TRUE(
缺省值),工作框将自动地禁止没有ON_UPDATE_COMMAND_UI或者ON_COMMAND的菜单项。
//Disable MFC from automatically disabling menu items.
m_bAuoMenuEnable=FALSE
//Now enable the menu item.
CMenu* pMenu=GetMenu ()
ASSERT_VALID (pMenu)
pMenu->EnableMenuItem (ID_MENU_ITEM,MF_BYCOMMAND | MF_ENABLED)
m_bAuoMenuEnable=FALSE
//Now enable the menu item.
CMenu* pMenu=GetMenu ()
ASSERT_VALID (pMenu)
pMenu->EnableMenuItem (ID_MENU_ITEM,MF_BYCOMMAND | MF_ENABLED)
我怎么才能在VC里面创建一个系统声?
你可以使用MessageBeep API调用。
下面是它的调用方法:
MessageBeep(UINT nType) //有6个参数,参考下面定义
-1 使用标准的扬声器
MB_ICONASTERISK SystemAsterisk
MB_ICONEXCLAMATION 调用系统“感叹”的声音
MB_ICONHAND SystemHand
MB_ICONQUESTION 系统出错声
MB_OK 系统缺省音
上面的声音除了扬声器不可更改,其余的都可在控制面板->声音里面进行更改。
我怎样才能建立一个等待光标?
调 用 BeginWaitCursor 函 数 来 启 动 等 待 光 标,调 用 EndWaitCursor
函 数 来 结 束 等 待 光 标。要 注 意,二 者 都 要 调 用 app 的 成 员 函
数,如 下 所 示:
AfxGetApp()->BeginWaitCursor();
// 要做的事
AfxGetApp()->EndWaitCursor();
使用拖放的简单方法
如果要为窗口增加接受Drag&Drop的功能,请按照以下步骤:
1、在OnCreate(...)中调用AcceptDrag(TRUE)。
2、增加消息映射3、处理消息BEGIN_MESSAGE_MAP(……)
//{{AFX_MSG_MAP(CDropEdit)
ON_WM_CREATE()
ON_WM_DROPFILES() // 关于Drag&Drop的消息
//}}AFX_MSG_MAP
END_MESSAGE_MAP()4、关于ExpandShortcut(...)void CXXXXX::OnDropFiles(HDROP dropInfo)
...{
// 得到Drag&Drop的文件个数
WORD wNumFilesDropped = DragQueryFile(dropInfo, -1, NULL, 0);
CString firstFile="";
//
for (WORD x = 0 ; x < wNumFilesDropped; x++) ...{
// 得到PathName的长度,由于第三个参数为NULL,所以调用会失败并返回所需长度
WORD wPathnameSize = DragQueryFile(dropInfo, x, NULL, 0);
// 分配memory
char * npszFile = (char *) LocalAlloc(LPTR, wPathnameSize += 1);
// 分配错
if (npszFile == NULL) continue;
// 再次得到文件名
DragQueryFile(dropInfo, x, npszFile, wPathnameSize);
firstFile=npszFile;
// 如果是shortCut则进行转换得到正确的文件名,expandedFile为最后的文件名
CString expandedFile = ExpandShortcut(firstFile);
// 释放memory
LocalFree(npszFile);
}
//完成
DragFinish(dropInfo);
}CString CXXXXX::ExpandShortcut(CString &inFile)
...{
CString outFile = "";
// Make sure we have a path
ASSERT(inFile != _T(""));
IShellLink* psl;
HRESULT hres;
LPTSTR lpsz = inFile.GetBuffer(MAX_PATH);
// Create instance for shell link
hres = ::CoCreateInstance(CLSID_ShellLink, NULL, CLSCTX_INPROC_SERVER,
IID_IShellLink, (LPVOID*) &psl);
if (SUCCEEDED(hres))
...{
// Get a pointer to the persist file interface
IPersistFile* ppf;
hres = psl->QueryInterface(IID_IPersistFile, (LPVOID*) &ppf);
if (SUCCEEDED(hres))
...{
// Make sure it's ANSI
WORD wsz[MAX_PATH];
::MultiByteToWideChar(CP_ACP, 0, lpsz, -1, wsz, MAX_PATH);
// Load shortcut
hres = ppf->Load(wsz, STGM_READ);
if (SUCCEEDED(hres)) ...{
WIN32_FIND_DATA wfd;
// find the path from that
HRESULT hres = psl->GetPath(outFile.GetBuffer(MAX_PATH),
MAX_PATH,
&wfd,
SLGP_UNCPRIORITY);
outFile.ReleaseBuffer();
}
ppf->Release();
}
psl->Release();
}
inFile.ReleaseBuffer();
// if this fails, outFile == ""
return outFile;
}
- VC编程常见问题集锦
- vc编程常见问题集锦及常用颜色
- VC 常见问题集锦
- VC常见问题集锦
- vc编程问题集锦
- VC编程技巧集锦
- vc编程中常见问题
- VC++编程常见问题解答
- VC++编程常见问题汇总
- VC编程零散笔记集锦
- 编程必备经典:Java常见问题集锦
- 编程必备经典:Java常见问题集锦
- PHP编程----PHP session常见问题集锦
- Visual C#.NET编程 常见问题集锦
- VC++编程常见问题解答十二
- VC++编程常见问题解答一
- VC数据库编程 ADO常见问题
- 常见问题集锦
- SVN安装指南!
- 裸奔编程之使用Servlet实现REST风格 开篇
- 有关宏的一个简单的问题
- C# 2.0 引入的匿名方法
- 我发现的第一个Microsoft的错别字
- VC编程常见问题集锦
- get和post的区别
- c# webeditor的数据库应用总结 IDENTITY_INSERT
- Struts 1 学习笔记-5-2(编写一个简单的支持I18N的登录系统)
- Trac安装指南!
- 有容乃大,无欲则刚
- 软件商品化阶段开发流程的疑问
- 温习sql语句中JOIN的各种操作(SQL2005环境)
- test