在学习C++的过程中你有遇到这些问题么?如果有,那你可以看看
liebian365 2024-10-24 14:35 23 浏览 0 评论
对这方面感兴趣或者想学习C/C++的可以加群:558502932,群内有很多C/C++学习资料,大家一起学习交流。
问题1:在消息WM_ENABLE中用“GetDlgItem(IDC_BUTTON)->EnableWindow(FALSE);”语句来Disable一个ID_BUTTON按钮时,却没有发生变化,这是为什么?
答:CWnd类中的EnableWindow函数用来Enable或Disable一个窗口类的对象,因为CButton类继承于CWnd类,所以你也可以用它来操作一个按钮。Enable一个基于窗口类的对象可以用以下代码:
pWnd->EnableWindow(TRUE);
Disable一个对象可用
pWnd->EnableWindow(FALSE);
其中,pWnd为一个指向窗口对象的指针(这里是指向按钮的指针),该问题关键在于VC中消息WM_ENABLE告诉窗口它正在Disable或Enable,但它并不能使一个窗口Enable或Disable。
问题2:如何才能将最近使用过的几个文件名(包含路径)显示出来?
答:你不需要建立一个CRecentFileList类,它已经由CWinApp基类完成了。你只需在
initinstance中调用LoadStdProfileSettings()函数就可以了。CRecentFileList类中有一个CWinApp保护成员变量(如m_pRecentFileList),所以你应该在你的继承类中处理它。
void CMdiApp::OnFileMruFile1()
{ // TODO: Add your command handler code here
CString vl_name ;
ASSERT( m_pRecentFileList->GetSize() > 0);
vl_name = (*m_pRecentFileList)[0];
CWinApp::OnOpenRecentFile(ID_FILE_MRU_FILE1);
}
问题3:在设计浮动菜单时设定为GRAYED的菜单项,如何在运行时激活它?
答:只要在适当的时候调用EnableMenuItem函数就可以了。EnableMenuItem函数带有两个参数,一个是需要改变的菜单项的ID,而第二个参数则是通知函数应采取的动作,可以用MF_ENABLE或MF_GRAYED。
void CMyView::OnRButtonDown(UINT nFlags, CPoint point)
{CScrollView::OnRButtonDown(nFlags, point);
CMenu *menu, *popup;
menu = new CMenu();
// load menu from resource file
menu->LoadMenu( IDR_POPUPMENU );
popup = menu->GetSubMenu(0); // item 0 is DUMMY
UINT nEnable;
nEnable = MF_BYCOMMAND|MF_GRAYED;
if( your test )
{nEnable = MF_BYCOMMAND|MF_ENABLED;}
popup->EnableMenuItem( ID_YOUR_ID, nEnable );
//display menu
ClientToScreen(&point);
popup->TrackPopupMenu(TPM_LEFTALIGN | TPM_R IGHTBUTTON,point.x, point.y,
this );
delete menu;}
其中your test为判断条件,根据具体情况来改成相应的条件。
问题4:我创建了一个使用数据库的MFC应用程序,用类模板生成CDaoRecordset直接打开数据库(不通过ODBC),请问应如何打开有密码保护的数据库?
答:方法一:请试用下面的一段代码:
DAODBEngine* pDBEngine = AfxDaoGetEngine();
ASSERT(pDBEngine != NULL);
COleVariant varUserName (strUserName, VT_BSTRT);
COleVariant varPassword (strPassword, VT_BSTRT);
DAO_CHECK(pDBEngine->put_DefaultUser (V_BSTR(&varUserName));
DAO_CHECK(pDBEngine->put_DefaultPassword (V_BSTR(&varPassword));
方法二:使用CDaoDatabase的Open方法:
MyDaoDatabase->Open(″C:\MyDatabaseFile.mdb″,FALSE,FALSE,″;PWD=MyPassWord″);
注意,请别忘了“;PWD=MyPassWord”前面的“;”号。
问题5:我想让调用的函数和被调用的函数属于同一个类,结果在调用CreateThread时出现如下错误:
error C2440: ′type cast′ : cannot convert from ′unsigned long (__stdcall
Cdmi::*)(void *)′ to ′unsigned long (__stdcall *)(void *)′
答:一、unsigned long (__stdcall Cdmi::*)(void *)是指向Cdmi某个成员函数的指针。
二、unsigned long (__stdcall *)(void *)仅仅是一个C形式函数的指针。
编译器无法将一转换为二是因为C++成员函数取第一个(隐藏)参数″this pointer″
作为成员函数,但作为静态成员时则例外。可按如下方法解决:
class XMyThread
{public:
void StartThread(void);
virtual UINT ThreadFunction(void);
static UINT __bogusthreadfunc(LPVOID lpparam);};
void XMyThread::StartThread()
{AfxBeginThread(__bogusthreadfunc,this);}
UINT XMyThread::ThreadFunction(void)
{//here you do all your real work
return 0;}
UINT XMyThread::__bogusthreadfunc(LPVOID lpparam)
{XMyThread* This = dynamic_cast(lpparam);
return This->ThreadFunction();}
由于版面有限,我们没有加入停止线程的代码。如果需要,可以继承XMyThread,并重写ThreadFunction()函数,如:
class XAnotherThread : public XMyThread
{virtual UINT ThreadFunction(void);};
UINT XAnotherThread :: ThreadFunction(void)
{//do some other work here
return 0;}
问题6:我将一个16x16的图标用在CListCtrl中时,发现它需要一个HICON句柄,请问我怎样才能从图标的ID中获取句柄?
答: 用以下的方法可以取得图标的句柄
HICON hIcon = NULL;
hIcon = LoadIcon(IDI_YOURICONID);
问题7:我已经调用了SetModifiedFlag()方法,但为什么在用户关闭文档窗口时仍然没有方法得知,如果我等到OnCloseDocument()时已经晚了,虽然我设置了标志,但它在改变时依然没有任何提示,请问这是为什么?
答:1)时刻检查用户的状态,只要用户有所变动就马上调用SetModifiedFlag()函数,并且多次调用完全没有性能上的问题。不要等到开始关闭时才调用SetModifiedFlag()。
2)当用户文档进行了改动时,在视类中调用“GetDocument()->SetModifiedFlag(TRUE)”。例如,如果在视中有一个CEdit控件,加入一个对消息ON_EN_CHANGE的自定义函数(假设为OnEditChange()),在这个函数里你就可以调用SetModifiedFlag()。
现在无论用户什么时候关闭计算机都可以询问是否保存。
问题8:打印程序中如何定义一页纸的区域,即无论如何画线,都不超出此区域?
答:在OnDraw中获得打印页面的范围,然后在该范围中画线。
void CView::OnDraw(CDC* pDC)
{ if(pDC->IsPrinting()!=0)
{ int cxPage = pDC->GetDeviceCaps(HORZRES);//获取打印页面范围
int cyPage = pDC->GetDeviceCaps(VERTRES);//get printer pixels per inch
int cxInch = pDC->GetDeviceCaps(LOGPIXELSX);
int cyInch = pDC->GetDeviceCaps(LOGPIXELSY);
...}}
问题9:在VC6(非MFC)中,我想实现将Ctrl+Alt+Del、Ctrl+Esc、Alt+Tab等功能组合键锁住,请问怎样使用Windows
API函数实现?
答:在VC6如果需要将功能组合键锁住,只需调用API函数SystemParametersInfo即可,使用如下:SystemParametersInfo(SPI_SETSCREENSAVERRUNNING,
TRUE, NULL, 0)。
问题10:我通过产生的一组随机数,在视中显示波形图。我采用了CRECT计算出视的失效区,并采用UPDATEWINDOW函数刷新视。程序进入死循环(呈现的波形正常),但我设置的SETTIMER(1,256,NULL)却没有起作用,请问这是为什么?
答:你可能在编写程序强制执行死循环,并且在死循环里没有加入消息处理机制,SetTimer发的WM_TIMER消息不能执行。因为在执行死循环时系统处于等待状态,解决这个问题的方法是:在循环中加入下面的语句
if (PeekMessage()) { TranslateMessage(); DispatchMessage() };
问题11:请问如何实现在移动窗口时,显示的是窗口而非虚框?
答:在Windows系统中,需要在移动窗口时显示窗口或虚框,可以调用Windows API函数来实现:
SystemParametersInfo(SPI_GETDRAGFULLWINDOWS, TRUE, NULL, 0)。
希望这篇文章能对你们有所帮助,如果有什么需要补充的,希望可以在评论区多多指出。
想学习C/C++的可以加群:558502932,群内有大量C/C++学习资料,大家一起学习交流。
相关推荐
- 4万多吨豪华游轮遇险 竟是因为这个原因……
-
(观察者网讯)4.7万吨豪华游轮搁浅,竟是因为油量太低?据观察者网此前报道,挪威游轮“维京天空”号上周六(23日)在挪威近海发生引擎故障搁浅。船上载有1300多人,其中28人受伤住院。经过数天的调...
- “菜鸟黑客”必用兵器之“渗透测试篇二”
-
"菜鸟黑客"必用兵器之"渗透测试篇二"上篇文章主要针对伙伴们对"渗透测试"应该如何学习?"渗透测试"的基本流程?本篇文章继续上次的分享,接着介绍一下黑客们常用的渗透测试工具有哪些?以及用实验环境让大家...
- 科幻春晚丨《震动羽翼说“Hello”》两万年星间飞行,探测器对地球的最终告白
-
作者|藤井太洋译者|祝力新【编者按】2021年科幻春晚的最后一篇小说,来自大家喜爱的日本科幻作家藤井太洋。小说将视角放在一颗太空探测器上,延续了他一贯的浪漫风格。...
- 麦子陪你做作业(二):KEGG通路数据库的正确打开姿势
-
作者:麦子KEGG是通路数据库中最庞大的,涵盖基因组网络信息,主要注释基因的功能和调控关系。当我们选到了合适的候选分子,单变量研究也已做完,接着研究机制的时便可使用到它。你需要了解你的分子目前已有哪些...
- 知存科技王绍迪:突破存储墙瓶颈,详解存算一体架构优势
-
智东西(公众号:zhidxcom)编辑|韦世玮智东西6月5日消息,近日,在落幕不久的GTIC2021嵌入式AI创新峰会上,知存科技CEO王绍迪博士以《存算一体AI芯片:AIoT设备的算力新选择》...
- 每日新闻播报(September 14)_每日新闻播报英文
-
AnOscarstatuestandscoveredwithplasticduringpreparationsleadinguptothe87thAcademyAward...
- 香港新巴城巴开放实时到站数据 供科技界研发使用
-
中新网3月22日电据香港《明报》报道,香港特区政府致力推动智慧城市,鼓励公私营机构开放数据,以便科技界研发使用。香港运输署21日与新巴及城巴(两巴)公司签署谅解备忘录,两巴将于2019年第3季度,开...
- 5款不容错过的APP: Red Bull Alert,Flipagram,WifiMapper
-
本周有不少非常出色的app推出,鸵鸟电台做了一个小合集。亮相本周榜单的有WifiMapper's安卓版的app,其中包含了RedBull的一款新型闹钟,还有一款可爱的怪物主题益智游戏。一起来看看我...
- Qt动画效果展示_qt显示图片
-
今天在这篇博文中,主要实践Qt动画,做一个实例来讲解Qt动画使用,其界面如下图所示(由于没有录制为gif动画图片,所以请各位下载查看效果):该程序使用应用程序单窗口,主窗口继承于QMainWindow...
- 如何从0到1设计实现一门自己的脚本语言
-
作者:dong...
- 三年级语文上册 仿写句子 需要的直接下载打印吧
-
描写秋天的好句好段1.秋天来了,山野变成了美丽的图画。苹果露出红红的脸庞,梨树挂起金黄的灯笼,高粱举起了燃烧的火把。大雁在天空一会儿写“人”字,一会儿写“一”字。2.花园里,菊花争奇斗艳,红的似火,粉...
- C++|那些一看就很简洁、优雅、经典的小代码段
-
目录0等概率随机洗牌:1大小写转换2字符串复制...
- 二年级上册语文必考句子仿写,家长打印,孩子照着练
-
二年级上册语文必考句子仿写,家长打印,孩子照着练。具体如下:...
你 发表评论:
欢迎- 一周热门
- 最近发表
- 标签列表
-
- wireshark怎么抓包 (75)
- qt sleep (64)
- cs1.6指令代码大全 (55)
- factory-method (60)
- sqlite3_bind_blob (52)
- hibernate update (63)
- c++ base64 (70)
- nc 命令 (52)
- wm_close (51)
- epollin (51)
- sqlca.sqlcode (57)
- lua ipairs (60)
- tv_usec (64)
- 命令行进入文件夹 (53)
- postgresql array (57)
- statfs函数 (57)
- .project文件 (54)
- lua require (56)
- for_each (67)
- c#工厂模式 (57)
- wxsqlite3 (66)
- dmesg -c (58)
- fopen参数 (53)
- tar -zxvf -c (55)
- 速递查询 (52)