LISTSCRL.CPP
上传用户:wtrl82617
上传日期:2007-01-07
资源大小:187k
文件大小:2k
源码类别:

界面编程

开发平台:

DOS

  1. // 1993 (c) ALL RIGHTS RESERVED
  2. // AUTHOR:  XuYongYong
  3. /* listscrl.cpp
  4.    a group with a listbox & a scroll
  5. */
  6. #include "listscrl.h"
  7. /**************************************************************************/
  8. listscrl_class::listscrl_class(int ID,char *title_hotkey,
  9. int left,int top,int width,int height,
  10. int string_num, char ** thestring_list)
  11. : group_class(ID,title_hotkey,left,top,width,height)
  12. // gruop 's min current max value is always 0
  13. {
  14. title_pos_x =left ;
  15. title_pos_y =top -bar_height-1;
  16. listbox =new Tlistbox ( ((ID<<8)|222),"",left,top,width-bar_height,height,-1,-1,
  17. string_num,thestring_list);
  18. scroll  =new Tscroll  ( ((ID<<8)|111),"",left+width-bar_height,top,bar_height,height,
  19. 0,( (string_num>1)?string_num-1:1),0);
  20. insert_control (listbox);
  21. insert_control (scroll);
  22. }
  23. void listscrl_class::setup_control(  )
  24. {  // outer changed listbox 's max_value ; that's enough
  25. scroll ->max_value =listbox ->max_value ;
  26. if (scroll->max_value<1) scroll->max_value =1; //min is 0
  27. scroll ->current_value =listbox ->current_value ;
  28. if (scroll->current_value<0 ) scroll->current_value =0;
  29. // can only used here
  30. listbox->setup_control( );
  31. scroll ->setup_control( );
  32. }
  33. /**************************************************************************/
  34. void listscrl_class::select ( )
  35. {
  36. listbox->select();
  37. scroll ->select();
  38. }
  39. /**************************************************************************/
  40. void listscrl_class::unselect ( )
  41. {
  42. listbox->unselect();
  43. scroll ->unselect();
  44. }
  45. /**************************************************************************/
  46. int listscrl_class::key_pressed_handler    (int key_scan_num )
  47. {
  48. return listbox->key_pressed_handler(key_scan_num);
  49. }
  50. int listscrl_class::msg_handler (MSG& message)
  51. {
  52.   static int flag=0;
  53. switch (message.Action) {
  54. case ListBoxValueChangedMSG:
  55. // if ( (message.ID & 0xFF)==222) {
  56. if ( message.fptr==listbox) {
  57. // if (flag !=2){
  58. if (scroll->current_value !=listbox->current_value)
  59. scroll->control_change_value(listbox->current_value);
  60. // flag =1;
  61. // }
  62. return TRUE; //maybe FALSE
  63. }
  64. case ScrollValueChangedMSG:
  65. if (message.fptr==scroll) {
  66. // if (flag !=1){
  67. if (listbox->current_value !=scroll->current_value)
  68. listbox->control_change_value(scroll->current_value);
  69. // flag =2;
  70. // }
  71. return TRUE; //maybe FALSE
  72. }
  73. default:return group_class::msg_handler (message);
  74. }
  75. }