我尝试给一个软件换皮肤。直接用ON_COMMAND(ID_LOADSKIN, OnLoadskin)没有问题,其中ID_LOADSKIN是一个MENUITEM的ID(MENUITEM "&LoadSkin",ID_LOADSKIN), OnLoadskin()是负责换皮肤的method. 可当我改写ButtonPressed(CString m_ButtonName),并让相关button去做同样的事情时,
else if(m_ButtonName == "BUTTON_POP1")
{
OnLoadskin();
}
程序会死掉,而debugger告诉我错在:
wincore.cpp
LRESULT CWnd::Default()
{
// call DefWindowProc with the last message
_AFX_THREAD_STATE* pThreadState = _afxThreadState.GetData();
return DefWindowProc(pThreadState->m_lastSentMsg.message,
pThreadState->m_lastSentMsg.wParam, pThreadState->m_lastSentMsg.lParam);
}我想大概是我有一些该清除/释放的东西没清除? 可我不是很懂。。 MENUITEM 与 BUTTON不该是一样的吗?为了这个突如其来的VC项目,我已经不断在试着看doc,书和源码,可两三个月的时间除了比较容易让人变得蓬头垢面老眼昏花,对我而言学好VC真的是不够。:p 帮帮忙吧。另外,msdn里说,
ON_COMMAND( id, memberFxn )
...
It indicates which function will handle a command message from a command user-interface object such as a menu item or toolbar button.
为什么我把ON_COMMAND(BUTTON_POP1, OnLoadskin)也加到BEGIN_MESSAGE_MAP里就什么反应都没有呢? 谢谢。
else if(m_ButtonName == "BUTTON_POP1")
{
OnLoadskin();
}
程序会死掉,而debugger告诉我错在:
wincore.cpp
LRESULT CWnd::Default()
{
// call DefWindowProc with the last message
_AFX_THREAD_STATE* pThreadState = _afxThreadState.GetData();
return DefWindowProc(pThreadState->m_lastSentMsg.message,
pThreadState->m_lastSentMsg.wParam, pThreadState->m_lastSentMsg.lParam);
}我想大概是我有一些该清除/释放的东西没清除? 可我不是很懂。。 MENUITEM 与 BUTTON不该是一样的吗?为了这个突如其来的VC项目,我已经不断在试着看doc,书和源码,可两三个月的时间除了比较容易让人变得蓬头垢面老眼昏花,对我而言学好VC真的是不够。:p 帮帮忙吧。另外,msdn里说,
ON_COMMAND( id, memberFxn )
...
It indicates which function will handle a command message from a command user-interface object such as a menu item or toolbar button.
为什么我把ON_COMMAND(BUTTON_POP1, OnLoadskin)也加到BEGIN_MESSAGE_MAP里就什么反应都没有呢? 谢谢。
解决方案 »
- 自动改变按钮的位置
- 一个关于结构大小的问题
- CComboBox是DropDown风格,如何设置ReadOnly?
- 我新建工程时选择了windows sockets设置。由于某些原因我必须把它删掉,请问有谁知道如何去掉啊?
- 我想实现状态条既能改变字体颜色和背景,又想在状态条加一个CButton能做到吗?
- VC中有没有功能和TC中的outport()一样的函数??
- 两只内置modem通信问题
- 小弟要学DLL不知那本书介绍的较详细。请高手帮忙。谢谢
- 我学了几个月c++,但没有工作中的实际经验,那位大虾收我为徒,拿些东西给我操练一下!
- X64下 MSCHRT20.OCX的注册
- ASP 服务器端COM 的释放,来着有分,,如果分不够,再加100,,直到解决为止
- 200分求一个控件
afx_msg void OnLoadskin();
UINT StringToID(CString m_ID)
{
struct ID
{
UINT m_ID;
char* m_Name;
} IDS[] = { BUTTON_PLAY, "BUTTON_PLAY",
BUTTON_MAXIMIZE, "BUTTON_MAXIMIZE",
BUTTON_STOP, "BUTTON_STOP",
...
BUTTON_POP1, "BUTTON_POP1",
BUTTON_POP2, "BUTTON_POP2",
...};
for(int i = 0; i < sizeof(IDS) / sizeof(ID); i++)
{
if(m_ID == IDS[i].m_Name)
return IDS[i].m_ID;
}
return 0;
}
ID和name是一样的。Hmm, 怎么办呢?