VC常见问题20110217
1
编译时遇到下面错误:
接近方法:用图标小作坊修改
2
MFC里的函数前面加::是什么意思
如果::前是空的,那么是全局对象,具体点说就是Window API的函数
::ReleaseCapture();表示是当前默认的类的函数。比如:
::ReleaseCapture();就是调用全局的ReleaseCapture();
非const对象一样可以调用const成员函数。const成员函数表示,这个函数不会修改类成员,除非成员加了修改mutable或者你在函数中主动使用了const_cast!它与普通成员函数就没有其他区别了。
4
afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
是消息处理函数的声明部分,
afx_msg前缀没有别的功能,只是用来提示这是一个消息处理函数
5
简单的说ON_COMMAND是点了按钮或菜单项后的响应消息,
ON_UPDATE_COMMAND_UI是用来表示对应的按钮和菜单项的状态的响应消息.
比如WINDOWS自带的记事本程序,它的"格式"菜单下有个"自动换行",那么在编写记事本这个程序时,对文本进行自动换行或不自动换行的操作就要放在ON_COMMAND消息响应函数里,而"自动换行"菜单项左边是否打勾的操作则放在ON_UPDATE_COMMAND_UI响应函数里.
int *n;
int m;
m = 100;
n = &m;
这样n就是一个指向m变量的整数型指针,修改*n相当于修改m
void fun(int &m)
函数使用引用变量
ERROR: cannot reuse string constants
原因:字符串ID值为61446
解决方法:重新建一个IDS相同字符串,然后把61446那条删掉,把61446空出来。
7
void CALLBACK EXPORT TimerProc(HWND hWnd,UINT nMsg,
该回调函数不是类的成员。
可能会遇到的问题即设置状态栏上的文字后不会显示原因分析:
(1)、设置字体是在原有的大写与数字栏等上。这样只有在打开键盘的大写键或数字键时才会显示。因为大写栏与数字栏的设置是由系统自动完成的,只有在触发其相应的消息时,才会显示。
(2)、自己新加的,确实不显示(有的显示,有的不显示,我遇到的是第二栏不显示)。原因是如果我们不为状态栏添加UPDATE的处理函数,MFC会自动禁止状态栏的该栏(pane)。为其相应栏添加UPDATE的处理函数即可。
例如:在MainFrm.h中添加
afx_msg void OnUpdatebar(CCmdUI *pCmdUI);
在MainFrm.cpp中添加
ON_UPDATE_COMMAND_UI(ID_INDICATOR_BAR, OnUpdatebar)
实现函数:
void CMainFrame::OnUpdatebar(CCmdUI *pCmdUI)
{
pCmdUI->Enable();