我使用win32建立了一个对话框界面,上面有列表框和复选框,我想通过选择不同的复选框使列表框出现不同的内容。请问是跟消息有关么?具体怎么操作,求给个思路?

解决方案 »

  1.   

    使用纯粹的win32 api那就要自己处理消息了,判断消息根据消息处理
      

  2.   

    在对话框的window procedure中响应WM_COMMAND消息。点击复选匡后,对话框会收到WM_COMMAND,其中HIWORD(wParam)是常量BN_CLICKED,LOWORD(wParam)是复选匡的控件ID,lParam是复选匡的句柄。
    判断复选匡是否选中,使用
    if IsDlgButtonChecked(hDlg{对话框句柄}, LOWORD(wParam)) = BST_CHECKED then ...列表框的字符串消息有LB_ADDSTRING、LB_DELETESTRING等。比如当复选匡选中后,向列表框添加字符串:
    var
      s: string;
    ...
    SendMessage(hListBox{列表框句柄}, LB_ADDSTRING, 0, LPARAM(PChar(s)));
    ...ps: 更多详情见MSDN。