24小时热门版块排行榜    

查看: 1294  |  回复: 30

zyw小欣

木虫 (正式写手)

引用回帖:
Originally posted by holmescn at 2010-11-02 10:45:46:
这是两个消息映射
用OnDblclkList1 这个函数响应 NM_DBCLCK消息
OnSetfocusList1函数响应NM_SETFOCUS消息

我查msdn看懂了这两句,可是仍然不知道ID_POP_LISTCTRL是干什么的。
21楼2010-11-02 11:17:21
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

magic7004

金虫 (职业作家)

zyw小欣(金币+10): 2010-11-02 15:22:08
这个东西是IDE自动生成的,楼主不需要自己去编辑它的。如果要找的话,就在.rc文件中 。

比如某工程的resource.h的开头部分如下:
//{{NO_DEPENDENCIES}}
// Microsoft Developer Studio generated include file.
//Used by Exe.rc
   这里已经注明了是Exe.rc用的
//
#define IDD_EXE_DIALOG                  102
#define IDR_SOUND1                      102
#define IDR_MAINFRAME                   128
#define IDD_DIALOG1                     133
#define ID_RADIO_EVERYDAY               1002
#define ID_RADIO_EVERYWEEK              1003
#define ID_RADIO_CUSTOM                 1004
#define ID_CHECK_MON                    1005

找到这个工程的.rc文件,可以看到其内容如下:
//Microsoft Developer Studio generated resource script.
//

#include "resource.h"  //注意这里引用了resource.h

//中间一段内容省略掉了
/////////////////////////////////////////////////////////////////////////////
//
// Dialog
//


IDD_EXE_DIALOG DIALOGEX 0, 0, 401, 305 //这里IDD_EXE_DIALOG是个DIALOG
STYLE DS_MODALFRAME | WS_MINIMIZEBOX | WS_POPUP | WS_CAPTION | WS_SYSMENU
EXSTYLE WS_EX_APPWINDOW
CAPTION "Timer Configuration"
FONT 9, "宋体"
BEGIN
    CONTROL         "启用闹钟(&U)",ID_CHECK_ENABLE_TIMER,"Button",
                    BS_AUTOCHECKBOX | WS_TABSTOP,7,17,60,10
    CONTROL         "每天(&E)",ID_RADIO_EVERYDAY,"Button",BS_AUTORADIOBUTTON |
                    WS_DISABLED,14,49,306,10
    CONTROL         "每星期(&K)",ID_RADIO_EVERYWEEK,"Button",
                    BS_AUTORADIOBUTTON | WS_DISABLED,14,68,304,10 //这里ID_RADIO_EVERYWEEK是IDD_EXE_DIALOG中的一个Button,其他的ID也可以在RC文件中找到,楼主自己找吧。

PS:如果楼主连消息映射都不清楚的话,建议搂住还是找本MFC的书好好看看吧。MFC要搞清楚还是要花点功夫的,如果楼主用得到,还是不要太浮躁,看本好点的书有好处的。

[ Last edited by magic7004 on 2010-11-2 at 13:08 ]
流氓不可怕,可怕的是流氓有文化,有文化又BH的流氓无敌~~!
22楼2010-11-02 13:05:43
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

zyw小欣

木虫 (正式写手)

引用回帖:
Originally posted by magic7004 at 2010-11-02 13:05:43:
这个东西是IDE自动生成的,楼主不需要自己去编辑它的。如果要找的话,就在.rc文件中 。

比如某工程的resource.h的开头部分如下:
//{{NO_DEPENDENCIES}}
// Microsoft Developer Studio genera ...

你说的这些我都懂,可是确实在.RC文件中没有啊,而且我试过了,有一些在resource.h中有的ID号,在.rc文件中就是查不到的。那查不到的话它到底是什么呢?
23楼2010-11-02 15:24:05
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

magic7004

金虫 (职业作家)

zyw小欣(金币+5): 2010-11-03 08:50:15
引用回帖:
Originally posted by zyw小欣 at 2010-11-02 15:24:05:


你说的这些我都懂,可是确实在.RC文件中没有啊,而且我试过了,有一些在resource.h中有的ID号,在.rc文件中就是查不到的。那查不到的话它到底是什么呢?

这样啊,那就是被删掉了啊。
被删掉的资源的ID在resource.h中是不会被删掉的,VC的IDE就是这么傻。

比如楼主在对话框中加入一个button,给个ID:ID_LZ_BUTTON,resource.h中就会有#define ID_LZ_BUTTON XX,后来楼主把这个button删掉,rc中就不会有ID_LZ_BUTTON了,但是resource.h中还是有的。

所以说,IDE自动生成的东西,不要手动去动它,没好处了。
流氓不可怕,可怕的是流氓有文化,有文化又BH的流氓无敌~~!
24楼2010-11-02 20:26:27
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

zyw小欣

木虫 (正式写手)

引用回帖:
Originally posted by magic7004 at 2010-11-02 20:26:27:


这样啊,那就是被删掉了啊。
被删掉的资源的ID在resource.h中是不会被删掉的,VC的IDE就是这么傻。

比如楼主在对话框中加入一个button,给个ID:ID_LZ_BUTTON,resource.h中就会有#define ID_LZ_BUTTON X ...

噢,这样啊。可是在程序中也有这个ID啊····我在前面提过,有它的定义的。ON_NOTIFY(NM_DBLCLK, ID_POP_LISTCTRL, OnDblclkList1)还有ON_NOTIFY(NM_SETFOCUS, ID_POP_LISTCTRL, OnSetfocusList1),里面都有ID_POP_LISCTRL,那么能知道这个ID是干啥的么?
25楼2010-11-03 08:52:11
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

holmescn

金虫 (正式写手)

zyw小欣(金币+3): 2010-11-03 09:14:26
你找到那两个函数,看看里面有没有什么线索. 比如有Create*之类的函数.

另外,这个程序可以编译运行吗?
26楼2010-11-03 09:05:50
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

zyw小欣

木虫 (正式写手)

引用回帖:
Originally posted by holmescn at 2010-11-03 09:05:50:
你找到那两个函数,看看里面有没有什么线索. 比如有Create*之类的函数.

另外,这个程序可以编译运行吗?

函数找到了,你是说函数里面有Create*的函数么?还是说函数所以的类里面有Create*之类的函数呢? 程序可以编译运行的。我看的是别人的程序噢。
27楼2010-11-03 09:16:25
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

holmescn

金虫 (正式写手)

我是说函数里有Create*的函数. 或者,如果可以得话,你把这两个函数贴上来
28楼2010-11-03 10:18:48
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

zyw小欣

木虫 (正式写手)

引用回帖:
Originally posted by holmescn at 2010-11-03 10:18:48:
我是说函数里有Create*的函数. 或者,如果可以得话,你把这两个函数贴上来

void CListCtrlPop::OnDblclkList1(NMHDR* pNMHDR, LRESULT* pResult)
{
        int mark=m_listctrl->GetSelectionMark();
        POSITION pos=m_listctrl->GetFirstSelectedItemPosition();
        for(;pos!=NULL
        {
                if(mark==m_listctrl->GetNextSelectedItem(pos))
                        this->SetStrWindowText();
        }
       
        *pResult = 0;
}
还有
void CListCtrlPop::OnDblclkList1(NMHDR* pNMHDR, LRESULT* pResult)
{
        int mark=m_listctrl->GetSelectionMark();
        POSITION pos=m_listctrl->GetFirstSelectedItemPosition();
        for(;pos!=NULL
        {
                if(mark==m_listctrl->GetNextSelectedItem(pos))
                        this->SetStrWindowText();
        }
       
        *pResult = 0;
}
29楼2010-11-03 11:34:02
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

holmescn

金虫 (正式写手)

网上搜索clistctrlpop可以看到, 这个东西是一个listctrl的提示信息. 当你双击那个list的时候,是不是会弹出一个信息?显示选中的那一项?

PS: 你貌似贴了两个一样的函数出来.

用"[code ]"和"[/code]"包裹你的代码,这样更好看一些.

[ Last edited by holmescn on 2010-11-3 at 12:54 ]
30楼2010-11-03 12:53:18
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 zyw小欣 的主题更新
普通表情 高级回复 (可上传附件)
信息提示
请填处理意见