[3] | 1 | #include "Common.h"
|
---|
| 2 |
|
---|
| 3 | ////////////////////////////////////////////////////////////////////////////
|
---|
| 4 | //このソースファイルではイベントプロシージャの管理を行う(MainWnd.abなど)
|
---|
| 5 | ////////////////////////////////////////////////////////////////////////////
|
---|
| 6 |
|
---|
| 7 | int NowMenuNum;
|
---|
| 8 |
|
---|
| 9 | int GetItemMessageInfo(int WndInfoNum,char *buffer,char *EventName){
|
---|
| 10 | extern PROJECTINFO ProjectInfo;
|
---|
| 11 | int i;
|
---|
| 12 |
|
---|
| 13 | for(i=lstrlen(buffer);i>=0;i--){
|
---|
| 14 | if(buffer[i]=='_') break;
|
---|
| 15 | }
|
---|
| 16 | if(i==-1) return 0;
|
---|
| 17 | lstrcpy(EventName,buffer+i+1);
|
---|
| 18 | buffer[i]=0;
|
---|
| 19 | if(lstrcmp(EventName,"MenuClick")==0) return CT_MENU;
|
---|
| 20 | for(i=0;i<ProjectInfo.pWindowInfo[WndInfoNum].NumberOfChildWindows;i++){
|
---|
| 21 | if(lstrcmp(buffer,ProjectInfo.pWindowInfo[WndInfoNum].pChildInfo[i].IdName)==0) break;
|
---|
| 22 | }
|
---|
| 23 | if(i==ProjectInfo.pWindowInfo[WndInfoNum].NumberOfChildWindows) return 0;
|
---|
| 24 |
|
---|
| 25 | return ProjectInfo.pWindowInfo[WndInfoNum].pChildInfo[i].Control;
|
---|
| 26 | }
|
---|
| 27 | char **GetProcedureNamesOfMessageCall(int WndInfoNum,ITEMEVENTINFO **ppItemEventInfo,int *num,BOOL *pbAlways){
|
---|
| 28 | extern HANDLE hHeap;
|
---|
| 29 | extern PROJECTINFO ProjectInfo;
|
---|
| 30 | int i,i2,i3,i4,i5,i6,NameLen,CallBackNameLen;
|
---|
| 31 | char *buffer,**ppNames,temporary[MAX_PATH],temp2[MAX_PATH];
|
---|
| 32 |
|
---|
| 33 | NameLen=lstrlen(ProjectInfo.pWindowInfo[WndInfoNum].name);
|
---|
| 34 | CallBackNameLen=lstrlen(ProjectInfo.pWindowInfo[WndInfoNum].CallBackName);
|
---|
| 35 |
|
---|
| 36 | sprintf(temporary,"%s%s",ProjectInfo.dir,ProjectInfo.pWindowInfo[WndInfoNum].filepath);
|
---|
| 37 | buffer=ReadBuffer(temporary);
|
---|
| 38 |
|
---|
| 39 | *num=0;
|
---|
| 40 | ppNames=(char **)HeapAlloc(hHeap,0,1);
|
---|
| 41 |
|
---|
| 42 | *pbAlways=0;
|
---|
| 43 |
|
---|
| 44 | //メッセージ
|
---|
| 45 | *ppItemEventInfo=(ITEMEVENTINFO *)HeapAlloc(hHeap,HEAP_ZERO_MEMORY,sizeof(ITEMEVENTINFO));
|
---|
| 46 | for(i=0,i4=0;;i++){
|
---|
| 47 | if(buffer[i]=='\0') break;
|
---|
| 48 |
|
---|
| 49 | //注釈(複数行)
|
---|
| 50 | if(buffer[i]=='/'&&buffer[i+1]=='*'){
|
---|
| 51 | i+=2;
|
---|
| 52 | while(!(buffer[i]=='*'&&buffer[i+1]=='/')){
|
---|
| 53 | if(buffer[i]=='\0'){
|
---|
| 54 | i--;
|
---|
| 55 | break;
|
---|
| 56 | }
|
---|
| 57 | i++;
|
---|
| 58 | }
|
---|
| 59 | continue;
|
---|
| 60 | }
|
---|
| 61 |
|
---|
| 62 | if((buffer[i]=='\r'&&buffer[i+1]=='\n'&&buffer[i+2]!='\0')||i==0){
|
---|
| 63 | if(buffer[i]=='\r'&&buffer[i+1]=='\n') i2=i+2;
|
---|
| 64 | else i2=i;
|
---|
| 65 | while(buffer[i2]>='0'&&buffer[i2]<='9') i2++;
|
---|
| 66 | while(buffer[i2]==' '||buffer[i2]=='\t') i2++;
|
---|
| 67 | if(memicmp(buffer+i2,"Sub",3)==0&&(buffer[i2+3]==' '||buffer[i2+3]=='\t')){
|
---|
| 68 | i2+=4;
|
---|
| 69 | while(buffer[i2]==' '||buffer[i2]=='\t') i2++;
|
---|
| 70 | strncpy(temporary,buffer+i2,NameLen);
|
---|
| 71 | temporary[NameLen]=0;
|
---|
| 72 | if(lstrcmp(temporary,ProjectInfo.pWindowInfo[WndInfoNum].name)==0&&buffer[i2+NameLen]=='_'){
|
---|
| 73 | for(i2+=NameLen+1,i3=0;;i2++,i3++){
|
---|
| 74 | if(!IsVariableChar(buffer[i2])){
|
---|
| 75 | temporary[i3]=0;
|
---|
| 76 | break;
|
---|
| 77 | }
|
---|
| 78 | temporary[i3]=buffer[i2];
|
---|
| 79 | }
|
---|
| 80 | i6=GetItemMessageInfo(WndInfoNum,temporary,temp2);
|
---|
| 81 | if(i6){
|
---|
| 82 | //アイテムメッセージ(WM_COMMAND、WM_NOTIFY)
|
---|
| 83 | for(i5=0;;i5++){
|
---|
| 84 | if((*ppItemEventInfo)[i5].IdName==0){
|
---|
| 85 | *ppItemEventInfo=(ITEMEVENTINFO *)HeapReAlloc(hHeap,HEAP_ZERO_MEMORY,*ppItemEventInfo,(i4+2)*sizeof(ITEMEVENTINFO));
|
---|
| 86 | (*ppItemEventInfo)[i4].IdName=(char *)HeapAlloc(hHeap,0,lstrlen(temporary)+1);
|
---|
| 87 | lstrcpy((*ppItemEventInfo)[i4].IdName,temporary);
|
---|
| 88 | (*ppItemEventInfo)[i4].pEventNames=(char **)HeapAlloc(hHeap,0,1);
|
---|
| 89 | (*ppItemEventInfo)[i4].ClassID=i6;
|
---|
| 90 | i4++;
|
---|
| 91 | break;
|
---|
| 92 | }
|
---|
| 93 | if(lstrcmp((*ppItemEventInfo)[i5].IdName,temporary)==0) break;
|
---|
| 94 | }
|
---|
| 95 | (*ppItemEventInfo)[i5].pEventNames=(char **)HeapReAlloc(hHeap,0,(*ppItemEventInfo)[i5].pEventNames,((*ppItemEventInfo)[i5].EventNum+1)*sizeof(char *));
|
---|
| 96 | (*ppItemEventInfo)[i5].pEventNames[(*ppItemEventInfo)[i5].EventNum]=(char *)HeapAlloc(hHeap,0,lstrlen(temp2)+1);
|
---|
| 97 | lstrcpy((*ppItemEventInfo)[i5].pEventNames[(*ppItemEventInfo)[i5].EventNum],temp2);
|
---|
| 98 | (*ppItemEventInfo)[i5].EventNum++;
|
---|
| 99 | }
|
---|
| 100 | else if(temporary[0]){
|
---|
| 101 | //一般メッセージ
|
---|
| 102 | ppNames=(char **)HeapReAlloc(hHeap,0,ppNames,(*num+1)*sizeof(char *));
|
---|
| 103 | ppNames[*num]=(char *)HeapAlloc(hHeap,0,lstrlen(temporary)+1);
|
---|
| 104 | lstrcpy(ppNames[*num],temporary);
|
---|
| 105 | (*num)++;
|
---|
| 106 | }
|
---|
| 107 | }
|
---|
| 108 | }
|
---|
| 109 | if(memicmp(buffer+i2,"Function",8)==0&&(buffer[i2+8]==' '||buffer[i2+8]=='\t')){
|
---|
| 110 | //[WndName]_WindowProcのみFunction定義
|
---|
| 111 | i2+=9;
|
---|
| 112 | while(buffer[i2]==' '||buffer[i2]=='\t') i2++;
|
---|
| 113 | if(memicmp(buffer+i2,ProjectInfo.pWindowInfo[WndInfoNum].CallBackName,CallBackNameLen)==0&&
|
---|
| 114 | (buffer[i2+CallBackNameLen]==' '||buffer[i2+CallBackNameLen]=='\t'||buffer[i2+CallBackNameLen]=='(')){
|
---|
| 115 | *pbAlways=1;
|
---|
| 116 | }
|
---|
| 117 | }
|
---|
| 118 | }
|
---|
| 119 | }
|
---|
| 120 | HeapDefaultFree(buffer);
|
---|
| 121 |
|
---|
| 122 | return ppNames;
|
---|
| 123 | }
|
---|
| 124 | void SelectProcedureOfMessageCall(int WndInfoNum,char *ProcedureName,char *Parameter){
|
---|
| 125 | extern MDIINFO MdiInfo[MAX_WNDNUM];
|
---|
| 126 | extern PROJECTINFO ProjectInfo;
|
---|
| 127 | int i,i2,i3,WndNum;
|
---|
| 128 | char temporary[MAX_PATH],*pBuf;
|
---|
| 129 | HWND hChild;
|
---|
| 130 | POINT pos;
|
---|
| 131 |
|
---|
| 132 | sprintf(temporary,"%s%s",ProjectInfo.dir,ProjectInfo.pWindowInfo[WndInfoNum].filepath);
|
---|
| 133 | hChild=OpenFileWithExtension(temporary);
|
---|
| 134 | if(!hChild) return;
|
---|
| 135 | WndNum=GetWndNum(hChild);
|
---|
| 136 |
|
---|
[24] | 137 | pBuf=MdiInfo[WndNum].pMdiTextEdit->buffer;
|
---|
[3] | 138 |
|
---|
| 139 | for(i=0;;i++){
|
---|
| 140 | if(pBuf[i]=='\0') break;
|
---|
| 141 | if((pBuf[i]=='\r'&&pBuf[i+1]=='\n'&&pBuf[i+2]!='\0')||i==0){
|
---|
| 142 | if(i) i2=i+2;
|
---|
| 143 | else i2=i;
|
---|
| 144 | while(pBuf[i2]>='0'&&pBuf[i2]<='9') i2++;
|
---|
| 145 | while(pBuf[i2]==' '||pBuf[i2]=='\t') i2++;
|
---|
| 146 | strncpy(temporary,pBuf+i2,3);
|
---|
| 147 | temporary[3]=0;
|
---|
| 148 | if(lstrcmpi(temporary,"Sub")==0&&(pBuf[i2+3]==' '||pBuf[i2+3]=='\t')){
|
---|
| 149 | pos.x=i2;
|
---|
| 150 | i2+=4;
|
---|
| 151 | while(pBuf[i2]==' '||pBuf[i2]=='\t') i2++;
|
---|
| 152 | for(i3=0;;i2++,i3++){
|
---|
| 153 | if(!IsVariableChar(pBuf[i2])){
|
---|
| 154 | temporary[i3]=0;
|
---|
| 155 | break;
|
---|
| 156 | }
|
---|
| 157 | temporary[i3]=pBuf[i2];
|
---|
| 158 | }
|
---|
| 159 | if(lstrcmpi(temporary,ProcedureName)==0){
|
---|
| 160 | for(;;i2++){
|
---|
| 161 | if(pBuf[i2]=='\r'||pBuf[i2]=='\0'){
|
---|
| 162 | if(pBuf[i2]=='\r'){
|
---|
| 163 | if(pBuf[i2+1]!='\n') continue;
|
---|
| 164 | }
|
---|
| 165 | pos.y=i2;
|
---|
| 166 | break;
|
---|
| 167 | }
|
---|
| 168 | }
|
---|
| 169 | break;
|
---|
| 170 | }
|
---|
| 171 | }
|
---|
| 172 | }
|
---|
| 173 | }
|
---|
| 174 | if(pBuf[i]){
|
---|
| 175 | //プロシージャが見つかったとき
|
---|
| 176 | TextEdit_SetSel(WndNum,pos.x,pos.y);
|
---|
| 177 | }
|
---|
| 178 | else{
|
---|
| 179 | //プロシージャがないときは生成する
|
---|
| 180 |
|
---|
| 181 | //挿入位置にキャレットを移動
|
---|
| 182 | TextEdit_SetSel(WndNum,i,i);
|
---|
| 183 |
|
---|
| 184 | //挿入
|
---|
| 185 | sprintf(temporary,"\r\nSub %s(%s)",ProcedureName,Parameter);
|
---|
| 186 | i2=lstrlen(temporary);
|
---|
| 187 | lstrcat(temporary,"\r\n\r\nEnd Sub\r\n");
|
---|
| 188 | TextEdit_ReplaceUpdateUndoData(WndNum,temporary,1,1);
|
---|
| 189 |
|
---|
| 190 | TextEdit_SetSel(WndNum,i+2,i+i2);
|
---|
| 191 | }
|
---|
[24] | 192 | SetFocus(MdiInfo[WndNum].pMdiTextEdit->hEdit);
|
---|
[3] | 193 | }
|
---|
| 194 | void InsertEventToList(HWND hList,int ItemNum,char *EventName,char *MessageName,char *OutLine){
|
---|
| 195 | LV_ITEM item;
|
---|
| 196 |
|
---|
| 197 | item.mask=LVIF_TEXT;
|
---|
| 198 | item.pszText=EventName;
|
---|
| 199 | item.iItem=ItemNum;
|
---|
| 200 | item.iSubItem=0;
|
---|
| 201 | ListView_InsertItem(hList,&item);
|
---|
| 202 | item.pszText=MessageName;
|
---|
| 203 | item.iItem=ItemNum;
|
---|
| 204 | item.iSubItem=1;
|
---|
| 205 | ListView_SetItem(hList,&item);
|
---|
| 206 | item.pszText=OutLine;
|
---|
| 207 | item.iItem=ItemNum;
|
---|
| 208 | item.iSubItem=2;
|
---|
| 209 | ListView_SetItem(hList,&item);
|
---|
| 210 | }
|
---|
| 211 | BOOL GetEventProcedureNameFromListView(HWND hList,int WndNum,int WndInfoNum,char *EventName,char *Parameter,DWORD dwEventType){
|
---|
| 212 | extern PROJECTINFO ProjectInfo;
|
---|
| 213 | extern MDIINFO MdiInfo[MAX_WNDNUM];
|
---|
| 214 | int i,MaxCount;
|
---|
| 215 | char temporary[MAX_PATH];
|
---|
| 216 |
|
---|
| 217 | MaxCount=ListView_GetItemCount(hList);
|
---|
| 218 | if(MdiInfo[WndNum].MdiRadInfo->SelectingItem[0]==SELECT_WINDOW){
|
---|
| 219 | if(dwEventType==EVENTTYPE_DEFAULT){
|
---|
| 220 | for(i=0;i<MaxCount;i++){
|
---|
| 221 | if(ListView_GetItemState(hList,i,LVIS_SELECTED)){
|
---|
| 222 | ListView_GetItemText(hList,i,0,temporary,MAX_PATH);
|
---|
| 223 | sprintf(EventName,"%s_%s",
|
---|
| 224 | ProjectInfo.pWindowInfo[WndInfoNum].name,
|
---|
| 225 | temporary);
|
---|
| 226 | break;
|
---|
| 227 | }
|
---|
| 228 | }
|
---|
| 229 | if(i==MaxCount) return 0;
|
---|
| 230 |
|
---|
| 231 | if(i==0) lstrcpy(Parameter,"state As Integer, minimized As Integer");
|
---|
| 232 | else if(i==1) lstrcpy(Parameter,"ByRef CreateStruct As CREATESTRUCT");
|
---|
| 233 | else if(i==2) Parameter[0]=0;
|
---|
| 234 | else if(i==3) lstrcpy(Parameter,"hDrop As HDROP");
|
---|
| 235 | else if(i==4) lstrcpy(Parameter,"nScrollCode As Long, nPos As Integer, hwndScrollBar As HWND");
|
---|
| 236 | else if(i==5) lstrcpy(Parameter,"KeyCode As Long, flags As Long");
|
---|
| 237 | else if(i==6) lstrcpy(Parameter,"KeyCode As Long, flags As Long");
|
---|
| 238 | else if(i==7) lstrcpy(Parameter,"KeyCode As Long, flags As Long");
|
---|
| 239 | else if(i==8) lstrcpy(Parameter,"flags As Long, x As Integer, y As Integer");
|
---|
| 240 | else if(i==9) lstrcpy(Parameter,"flags As Long, x As Integer, y As Integer");
|
---|
| 241 | else if(i==10) lstrcpy(Parameter,"flags As Long, x As Integer, y As Integer");
|
---|
| 242 | else if(i==11) lstrcpy(Parameter,"flags As Long, x As Integer, y As Integer");
|
---|
| 243 | else if(i==12) lstrcpy(Parameter,"flags As Long, x As Integer, y As Integer");
|
---|
| 244 | else if(i==13) lstrcpy(Parameter,"flags As Long, x As Integer, y As Integer");
|
---|
| 245 | else if(i==14) lstrcpy(Parameter,"flags As Long, x As Integer, y As Integer");
|
---|
| 246 | else if(i==15) lstrcpy(Parameter,"x As Integer, y As Integer");
|
---|
| 247 | else if(i==16) lstrcpy(Parameter,"ByRef nmHdr As NMHDR");
|
---|
| 248 | else if(i==17) lstrcpy(Parameter,"hDC As HDC");
|
---|
| 249 | else if(i==18) lstrcpy(Parameter,"ByRef cancel As Integer");
|
---|
| 250 | else if(i==19) lstrcpy(Parameter,"flags As Long, x As Integer, y As Integer");
|
---|
| 251 | else if(i==20) lstrcpy(Parameter,"flags As Long, x As Integer, y As Integer");
|
---|
| 252 | else if(i==21) lstrcpy(Parameter,"flags As Long, x As Integer, y As Integer");
|
---|
| 253 | else if(i==22) lstrcpy(Parameter,"SizeType As Long, cx As Integer, cy As Integer");
|
---|
| 254 | else if(i==23) Parameter[0]=0;
|
---|
| 255 | else if(i==24) lstrcpy(Parameter,"TimerID As DWord");
|
---|
| 256 | else if(i==25) lstrcpy(Parameter,"nScrollCode As Long, nPos As Integer, hwndScrollBar As HWND");
|
---|
| 257 | }
|
---|
| 258 | else if(dwEventType==EVENTTYPE_MENU){
|
---|
| 259 | for(i=0;i<MaxCount;i++){
|
---|
| 260 | if(ListView_GetItemState(hList,i,LVIS_SELECTED)){
|
---|
| 261 | ListView_GetItemText(hList,i,0,temporary,MAX_PATH);
|
---|
| 262 | sprintf(EventName,"%s_%s_MenuClick",
|
---|
| 263 | ProjectInfo.pWindowInfo[WndInfoNum].name,
|
---|
| 264 | temporary);
|
---|
| 265 | break;
|
---|
| 266 | }
|
---|
| 267 | }
|
---|
| 268 | if(i==MaxCount) return 0;
|
---|
| 269 |
|
---|
| 270 | Parameter[0]=0;
|
---|
| 271 | }
|
---|
| 272 | else if(dwEventType==EVENTTYPE_MMSYS){
|
---|
| 273 | for(i=0;i<MaxCount;i++){
|
---|
| 274 | if(ListView_GetItemState(hList,i,LVIS_SELECTED)){
|
---|
| 275 | ListView_GetItemText(hList,i,0,temporary,MAX_PATH);
|
---|
| 276 | sprintf(EventName,"%s_%s",
|
---|
| 277 | ProjectInfo.pWindowInfo[WndInfoNum].name,
|
---|
| 278 | temporary);
|
---|
| 279 | break;
|
---|
| 280 | }
|
---|
| 281 | }
|
---|
| 282 | if(i==MaxCount) return 0;
|
---|
| 283 |
|
---|
| 284 | if(i==0) lstrcpy(Parameter,"flags As Long, DevID As DWord");
|
---|
| 285 | }
|
---|
| 286 | }
|
---|
| 287 | else{
|
---|
| 288 | for(i=0;i<MaxCount;i++){
|
---|
| 289 | if(ListView_GetItemState(hList,i,LVIS_SELECTED)){
|
---|
| 290 | ListView_GetItemText(hList,i,0,temporary,MAX_PATH);
|
---|
| 291 | sprintf(EventName,"%s_%s_%s",
|
---|
| 292 | ProjectInfo.pWindowInfo[WndInfoNum].name,
|
---|
| 293 | ProjectInfo.pWindowInfo[WndInfoNum].pChildInfo[MdiInfo[WndNum].MdiRadInfo->SelectingItem[0]].IdName,
|
---|
| 294 | temporary);
|
---|
| 295 | break;
|
---|
| 296 | }
|
---|
| 297 | }
|
---|
| 298 | if(i==MaxCount) return 0;
|
---|
| 299 |
|
---|
| 300 | if(ProjectInfo.pWindowInfo[WndInfoNum].pChildInfo[MdiInfo[WndNum].MdiRadInfo->SelectingItem[0]].Control==CT_LISTVIEW){
|
---|
| 301 | //ListView
|
---|
| 302 | if(i==0) lstrcpy(Parameter,"ByRef nmListView As NMLISTVIEW");
|
---|
| 303 | else if(i==1) lstrcpy(Parameter,"ByRef nmListView As NMLISTVIEW");
|
---|
| 304 | else if(i==2) lstrcpy(Parameter,"ByRef nmHdr As NMHDR");
|
---|
| 305 | else if(i==3) lstrcpy(Parameter,"ByRef nmHdr As NMHDR");
|
---|
| 306 | else if(i==4) lstrcpy(Parameter,"ByRef nmListView As NMLISTVIEW");
|
---|
| 307 | else if(i==5) lstrcpy(Parameter,"ByRef nmListView As NMLISTVIEW");
|
---|
| 308 | else if(i==6) lstrcpy(Parameter,"ByRef nmHdr As NMHDR");
|
---|
| 309 | else if(i==7) lstrcpy(Parameter,"ByRef nmHdr As NMHDR");
|
---|
| 310 | else if(i==8) lstrcpy(Parameter,"ByRef nmListView As NMLISTVIEW");
|
---|
| 311 | else if(i==9) lstrcpy(Parameter,"ByRef nmLVDispInfo As NMLVDISPINFO");
|
---|
| 312 | else if(i==10) lstrcpy(Parameter,"ByRef nmListView As NMLISTVIEW");
|
---|
| 313 | else if(i==11) lstrcpy(Parameter,"ByRef nmListView As NMLISTVIEW");
|
---|
| 314 | else if(i==12) lstrcpy(Parameter,"ByRef nmListView As NMLISTVIEW");
|
---|
| 315 | else if(i==13) lstrcpy(Parameter,"ByRef nmListView As NMLISTVIEW");
|
---|
| 316 | else if(i==14) lstrcpy(Parameter,"ByRef nmLVDispInfo As NMLVDISPINFO");
|
---|
| 317 | else if(i==15) lstrcpy(Parameter,"ByRef nmLVDispInfo As NMLVDISPINFO");
|
---|
| 318 | else if(i==16) lstrcpy(Parameter,"ByRef nmListView As NMLISTVIEW");
|
---|
| 319 | else if(i==17) lstrcpy(Parameter,"ByRef nmListView As NMLISTVIEW");
|
---|
| 320 | else if(i==18) lstrcpy(Parameter,"ByRef nmListView As NMLISTVIEW");
|
---|
| 321 | else if(i==19) lstrcpy(Parameter,"ByRef nmLVKeyDown As NMLVKEYDOWN");
|
---|
| 322 | else if(i==20) lstrcpy(Parameter,"ByRef nmLVDispInfo As NMLVDISPINFO");
|
---|
| 323 | }
|
---|
| 324 | else if(ProjectInfo.pWindowInfo[WndInfoNum].pChildInfo[MdiInfo[WndNum].MdiRadInfo->SelectingItem[0]].Control==CT_PROGRESSBAR){
|
---|
| 325 | //ProgressBar
|
---|
| 326 | lstrcpy(Parameter,"ByRef nmHdr As NMHDR");
|
---|
| 327 | }
|
---|
| 328 | else if(ProjectInfo.pWindowInfo[WndInfoNum].pChildInfo[MdiInfo[WndNum].MdiRadInfo->SelectingItem[0]].Control==CT_TRACKBAR){
|
---|
| 329 | //TrackBar
|
---|
| 330 | lstrcpy(Parameter,"ByRef nmHdr As NMHDR");
|
---|
| 331 | }
|
---|
| 332 | else if(ProjectInfo.pWindowInfo[WndInfoNum].pChildInfo[MdiInfo[WndNum].MdiRadInfo->SelectingItem[0]].Control==CT_TREEVIEW){
|
---|
| 333 | //TreeView
|
---|
| 334 | if(0<=i&&i<=7) lstrcpy(Parameter,"ByRef nmHdr As NMHDR");
|
---|
| 335 | else lstrcpy(Parameter,"ByRef nmTreeView As NMTREEVIEW");
|
---|
| 336 | }
|
---|
| 337 | else if(ProjectInfo.pWindowInfo[WndInfoNum].pChildInfo[MdiInfo[WndNum].MdiRadInfo->SelectingItem[0]].Control==CT_UPDOWN){
|
---|
| 338 | //UpDown
|
---|
| 339 | if(i==0) lstrcpy(Parameter,"ByRef nmHdr As NMHDR");
|
---|
| 340 | else if(i==1) lstrcpy(Parameter,"ByRef nmUpDown As NMUPDOWN");
|
---|
| 341 | }
|
---|
| 342 | else Parameter[0]=0;
|
---|
| 343 | }
|
---|
| 344 |
|
---|
| 345 | return 1;
|
---|
| 346 | }
|
---|
| 347 | int SetDefaultNotifyMessagesInList(HWND hList,int ClassID){
|
---|
| 348 | int i;
|
---|
| 349 | i=0;
|
---|
| 350 | InsertEventToList(hList,i++,"Click","NM_CLICK","コントロール内でマウスの左ボタンがクリックされた時");
|
---|
| 351 | InsertEventToList(hList,i++,"DblClick","NM_DBLCLK","コントロール内でマウスの左ボタンがダブル クリックされた時");
|
---|
| 352 | InsertEventToList(hList,i++,"KillFocus","NM_KILLFOCUS","入力フォーカスを失った時");
|
---|
| 353 | InsertEventToList(hList,i++,"OutOfMemory","NM_OUTOFMEMORY","メモリ不足でコントロールの動作が完了できない時");
|
---|
| 354 | InsertEventToList(hList,i++,"RClick","NM_RCLICK","コントロール内でマウスの右ボタンがクリックされた時");
|
---|
| 355 | InsertEventToList(hList,i++,"RDblClick","NM_RDBLCLK","コントロール内でマウスの右ボタンがダブル クリックされた時");
|
---|
| 356 | InsertEventToList(hList,i++,"Return","NM_RETURN","コントロールに入力フォーカスがあるときにEnterキーが押された時");
|
---|
| 357 | InsertEventToList(hList,i++,"SetFocus","NM_SETFOCUS","入力フォーカスを取得した時");
|
---|
| 358 | if(ClassID==CT_LISTVIEW){
|
---|
| 359 | InsertEventToList(hList,i++,"BeginDrag","LVN_BEGINDRAG","マウスの左ボタンでドラッグ&ドロップを始める時");
|
---|
| 360 | InsertEventToList(hList,i++,"BeginLabelEdit","LVN_BEGINLABELEDIT","アイテムのラベルの編集が開始された時");
|
---|
| 361 | InsertEventToList(hList,i++,"BeginRDrag","LVN_BEGINRDRAG","マウスの右ボタンでドラッグ&ドロップを始める時");
|
---|
| 362 | InsertEventToList(hList,i++,"ColumnClick","LVN_COLUMNCLICK","カラムの1つがクリックされた時");
|
---|
| 363 | InsertEventToList(hList,i++,"DeleteAllItems","LVN_DELETEALLITEMS","ビュー内のすべてのアイテムが削除された時");
|
---|
| 364 | InsertEventToList(hList,i++,"DeleteItem","LVN_DELETEITEM","ビュー内のアイテムが削除された時");
|
---|
| 365 | InsertEventToList(hList,i++,"EndLabelEdit","LVN_ENDLABELEDIT","アイテムのラベルの編集が終了した時");
|
---|
| 366 | InsertEventToList(hList,i++,"GetDispInfo","LVN_GETDISPINFO","親ウィンドウがディスプレイに関する情報を供給した時");
|
---|
| 367 | InsertEventToList(hList,i++,"InsertItem","LVN_INSERTITEM","ビュー内にアイテムが挿入された時");
|
---|
| 368 | InsertEventToList(hList,i++,"ItemChanged","LVN_ITEMCHANGED","ビュー内のアイテムが変更された時");
|
---|
| 369 | InsertEventToList(hList,i++,"ItemChanging","LVN_ITEMCHANGING","ビュー内のアイテムを変更する時");
|
---|
| 370 | InsertEventToList(hList,i++,"KeyDown","LVN_KEYDOWN","キーが押された時");
|
---|
| 371 | InsertEventToList(hList,i++,"SetDispInfo","LVN_SETDISPINFO","親ウィンドウがアイテムに対して情報を更新する必要がある時");
|
---|
| 372 | }
|
---|
| 373 | else if(ClassID==CT_TREEVIEW){
|
---|
| 374 | //未完成
|
---|
| 375 | }
|
---|
| 376 | return i;
|
---|
| 377 | }
|
---|
| 378 | void SetMenuEventToList(HWND hList,MENU_INFO *pMenuInfo,int *pListNum,int *pPos){
|
---|
| 379 | int i;
|
---|
| 380 | for(i=0;i<pMenuInfo->NumberOfMenu;i++){
|
---|
| 381 | if((!pMenuInfo->pMenuInfo[i].pMenuInfo)&&pMenuInfo->pMenuInfo[i].type==MFT_STRING)
|
---|
| 382 | InsertEventToList(hList,(*pListNum)++,pMenuInfo->pMenuInfo[i].IdName,"WM_COMMAND",pMenuInfo->pMenuInfo[i].caption);
|
---|
| 383 | (*pPos)++;
|
---|
| 384 | if(pMenuInfo->pMenuInfo[i].pMenuInfo)
|
---|
| 385 | SetMenuEventToList(hList,&pMenuInfo->pMenuInfo[i],pListNum,pPos);
|
---|
| 386 | }
|
---|
| 387 | }
|
---|
| 388 | void SetEventToList(HWND hDlg,DWORD dwEventType){
|
---|
| 389 | extern MDIINFO MdiInfo[MAX_WNDNUM];
|
---|
| 390 | extern PROJECTINFO ProjectInfo;
|
---|
| 391 | int i,i2,WndNum,WndInfoNum;
|
---|
| 392 | HWND hList;
|
---|
| 393 |
|
---|
| 394 | hList=GetDlgItem(hDlg,IDC_EVENTLIST);
|
---|
| 395 | ListView_DeleteAllItems(hList);
|
---|
| 396 | SetDlgItemText(hDlg,IDC_PROCEDURENAME,"");
|
---|
| 397 |
|
---|
| 398 | WndNum=GetWndNum(GetWindow(hClient,GW_CHILD));
|
---|
| 399 | WndInfoNum=GetWndInfoNum(MdiInfo[WndNum].path);
|
---|
| 400 | i=0;
|
---|
| 401 | if(MdiInfo[WndNum].MdiRadInfo->SelectingItem[0]==SELECT_WINDOW){
|
---|
| 402 | EnableWindow(GetDlgItem(hDlg,IDC_DEFAULT),1);
|
---|
| 403 | EnableWindow(GetDlgItem(hDlg,IDC_MENU),1);
|
---|
| 404 | EnableWindow(GetDlgItem(hDlg,IDC_MMSYS),1);
|
---|
| 405 | if(dwEventType==EVENTTYPE_DEFAULT){
|
---|
| 406 | SendDlgItemMessage(hDlg,IDC_DEFAULT,BM_SETCHECK,BST_CHECKED,0);
|
---|
| 407 | InsertEventToList(hList,i++,"Activate","WM_ACTIVATE","ウィンドウがアクティブ、または非アクティブになった時");
|
---|
| 408 | InsertEventToList(hList,i++,"Create","WM_CREATE","ウィンドウ作成時");
|
---|
| 409 | InsertEventToList(hList,i++,"Destroy","WM_DESTROY","ウィンドウ破棄時");
|
---|
| 410 | InsertEventToList(hList,i++,"DropFiles","WM_DROPFILES","ウィンドウにファイルがドロップされた時");
|
---|
| 411 | InsertEventToList(hList,i++,"HScroll","WM_HSCROLL","水平スクロール バー・トラック バーが移動した時");
|
---|
| 412 | InsertEventToList(hList,i++,"KeyDown","WM_KEYDOWN","キーが押された時");
|
---|
| 413 | InsertEventToList(hList,i++,"KeyPress","WM_CHAR","ANSI文字キーを押して離した時");
|
---|
| 414 | InsertEventToList(hList,i++,"KeyUp","WM_KEYUP","キーが離された時");
|
---|
| 415 | InsertEventToList(hList,i++,"LButtonDblClick","WM_LBUTTONDBLCLK","マウスの左ボタンがダブル クリックされた時");
|
---|
| 416 | InsertEventToList(hList,i++,"LButtonDown","WM_LBUTTONDOWN","マウスの左ボタンが押された時");
|
---|
| 417 | InsertEventToList(hList,i++,"LButtonUp","WM_LBUTTONUP","マウスの左ボタンが離された時");
|
---|
| 418 | InsertEventToList(hList,i++,"MButtonDblClick","WM_MBUTTONDBLCLK","マウスの中央ボタンがダブル クリックされた時");
|
---|
| 419 | InsertEventToList(hList,i++,"MButtonDown","WM_MBUTTONDOWN","マウスの中央ボタンが押された時");
|
---|
| 420 | InsertEventToList(hList,i++,"MButtonUp","WM_MBUTTONUP","マウスの中央ボタンが離された時");
|
---|
| 421 | InsertEventToList(hList,i++,"MouseMove","WM_MOUSEMOVE","マウスが移動した時");
|
---|
| 422 | InsertEventToList(hList,i++,"Move","WM_MOVE","ウィンドウが移動した時");
|
---|
| 423 | InsertEventToList(hList,i++,"Notify","WM_NOTIFY","コモンコントロールからメッセージが通知された時");
|
---|
| 424 | InsertEventToList(hList,i++,"Paint","WM_PAINT","再描画要求が出された時");
|
---|
| 425 | InsertEventToList(hList,i++,"QueryClose","WM_CLOSE","ウィンドウの終了ボタンが押された時");
|
---|
| 426 | InsertEventToList(hList,i++,"RButtonDblClick","WM_RBUTTONDBLCLK","マウスの右ボタンがダブル クリックされた時");
|
---|
| 427 | InsertEventToList(hList,i++,"RButtonDown","WM_RBUTTONDOWN","マウスの右ボタンが押された時");
|
---|
| 428 | InsertEventToList(hList,i++,"RButtonUp","WM_RBUTTONUP","マウスの右ボタンが離された時");
|
---|
| 429 | InsertEventToList(hList,i++,"Resize","WM_SIZE","ウィンドウの大きさが変更された時");
|
---|
| 430 | InsertEventToList(hList,i++,"SetFocus","WM_SETFOCUS","キーボード フォーカスを受け取った時");
|
---|
| 431 | InsertEventToList(hList,i++,"Timer","WM_TIMER","設定したタイマーのタイム アウト時");
|
---|
| 432 | InsertEventToList(hList,i++,"VScroll","WM_VSCROLL","垂直スクロール バー・トラック バーが移動した時");
|
---|
| 433 | }
|
---|
| 434 | else if(dwEventType==EVENTTYPE_MENU){
|
---|
| 435 | //メニュー イベント
|
---|
| 436 | SendDlgItemMessage(hDlg,IDC_MENU,BM_SETCHECK,BST_CHECKED,0);
|
---|
| 437 | if(ProjectInfo.pWindowInfo[WndInfoNum].MenuID){
|
---|
| 438 | int MenuInfoNum;
|
---|
| 439 | MenuInfoNum=GetMenuInfoNum(ProjectInfo.pWindowInfo[WndInfoNum].MenuID);
|
---|
| 440 | i=0;
|
---|
| 441 | i2=0;
|
---|
| 442 |
|
---|
| 443 | SetMenuEventToList(hList,&ProjectInfo.pMenuInfo[MenuInfoNum],&i,&i2);
|
---|
| 444 | }
|
---|
| 445 | }
|
---|
| 446 | else if(dwEventType==EVENTTYPE_MMSYS){
|
---|
| 447 | SendDlgItemMessage(hDlg,IDC_MMSYS,BM_SETCHECK,BST_CHECKED,0);
|
---|
| 448 | InsertEventToList(hList,i++,"MciNotify","MM_MCINOTIFY","MCIコマンドが完了したり異常終了した場合");
|
---|
| 449 | }
|
---|
| 450 | }
|
---|
| 451 | else{
|
---|
| 452 | EnableWindow(GetDlgItem(hDlg,IDC_DEFAULT),1);
|
---|
| 453 | EnableWindow(GetDlgItem(hDlg,IDC_MENU),0);
|
---|
| 454 | EnableWindow(GetDlgItem(hDlg,IDC_MMSYS),0);
|
---|
| 455 | SendDlgItemMessage(hDlg,IDC_DEFAULT,BM_SETCHECK,BST_CHECKED,0);
|
---|
| 456 | if(ProjectInfo.pWindowInfo[WndInfoNum].pChildInfo[MdiInfo[WndNum].MdiRadInfo->SelectingItem[0]].Control==CT_BUTTON){
|
---|
| 457 | //Button
|
---|
| 458 | InsertEventToList(hList,i++,"Click","BN_CLICKED","ボタンがクリックされた時");
|
---|
| 459 | InsertEventToList(hList,i++,"DblClick","BN_DBLCLK","ボタンがダブル クリックされた時");
|
---|
| 460 | }
|
---|
| 461 | else if(ProjectInfo.pWindowInfo[WndInfoNum].pChildInfo[MdiInfo[WndNum].MdiRadInfo->SelectingItem[0]].Control==CT_CHECKBOX){
|
---|
| 462 | //CheckBox
|
---|
| 463 | InsertEventToList(hList,i++,"Click","BN_CLICKED","チェック ボックスがクリックされた時");
|
---|
| 464 | InsertEventToList(hList,i++,"DblClick","BN_DBLCLK","チェック ボックスがダブル クリックされた時");
|
---|
| 465 | }
|
---|
| 466 | else if(ProjectInfo.pWindowInfo[WndInfoNum].pChildInfo[MdiInfo[WndNum].MdiRadInfo->SelectingItem[0]].Control==CT_COMBOBOX){
|
---|
| 467 | //ComboBox
|
---|
| 468 | InsertEventToList(hList,i++,"CloseUp","CBN_CLOSEUP","リスト ボックスが非表示になる時");
|
---|
| 469 | InsertEventToList(hList,i++,"DblClick","CBN_DBLCLK","リスト内のアイテムがダブル クリックされた時");
|
---|
| 470 | InsertEventToList(hList,i++,"DropDown","CBN_DROPDOWN","リスト ボックスがドロップ ダウンされる時");
|
---|
| 471 | InsertEventToList(hList,i++,"EditChange","CBN_EDITCHANGE","エディット ボックスの内容が変化した時(後処理)");
|
---|
| 472 | InsertEventToList(hList,i++,"EditUpdate","CBN_EDITUPDATE","リスト ボックスが非表示になった時");
|
---|
| 473 | InsertEventToList(hList,i++,"ErrSpace","CBN_ERRSPACE","メモリ割り当てに失敗した時");
|
---|
| 474 | InsertEventToList(hList,i++,"KillFocus","CBN_KILLFOCUS","入力フォーカスを失った時");
|
---|
| 475 | InsertEventToList(hList,i++,"SelChange","CBN_SELCHANGE","リスト内の選択が変更された時");
|
---|
| 476 | InsertEventToList(hList,i++,"SelEndCancel","CBN_SELENDCANCEL","コンボ ボックスの選択を取り消した時");
|
---|
| 477 | InsertEventToList(hList,i++,"SelEndOk","CBN_SELENDOK","選択した項目が有効である時");
|
---|
| 478 | InsertEventToList(hList,i++,"SetFocus","CBN_SETFOCUS","入力フォーカスを取得した時");
|
---|
| 479 | }
|
---|
| 480 | else if(ProjectInfo.pWindowInfo[WndInfoNum].pChildInfo[MdiInfo[WndNum].MdiRadInfo->SelectingItem[0]].Control==CT_EDIT){
|
---|
| 481 | //Edit
|
---|
| 482 | InsertEventToList(hList,i++,"Change","EN_CHANGE","エディット ボックスの内容が変更された時(後処理)");
|
---|
| 483 | InsertEventToList(hList,i++,"ErrSpace","EN_ERRSPACE","メモリ割り当てに失敗した時");
|
---|
| 484 | InsertEventToList(hList,i++,"HScroll","EN_HSCROLL","水平スクロールを行った時");
|
---|
| 485 | InsertEventToList(hList,i++,"KillFocus","EN_KILLFOCUS","入力フォーカスを失った時");
|
---|
| 486 | InsertEventToList(hList,i++,"MaxText","EN_MAXTEXT","文字数が上限を超えた時");
|
---|
| 487 | InsertEventToList(hList,i++,"SetFocus","EN_SETFOCUS","入力フォーカスを取得した時");
|
---|
| 488 | InsertEventToList(hList,i++,"Update","EN_UPDATE","エディット ボックスの内容が変更される時(前処理)");
|
---|
| 489 | InsertEventToList(hList,i++,"VScroll","EN_VSCROLL","垂直スクロールを行った時");
|
---|
| 490 | }
|
---|
| 491 | else if(ProjectInfo.pWindowInfo[WndInfoNum].pChildInfo[MdiInfo[WndNum].MdiRadInfo->SelectingItem[0]].Control==CT_IMAGEBOX){
|
---|
| 492 | //ImageBox
|
---|
| 493 | InsertEventToList(hList,i++,"Click","STN_CLICKED","イメージ ボックスがクリックされた時");
|
---|
| 494 | InsertEventToList(hList,i++,"DblClick","STN_DBLCLK","イメージ ボックスがダブル クリックされた時");
|
---|
| 495 | }
|
---|
| 496 | else if(ProjectInfo.pWindowInfo[WndInfoNum].pChildInfo[MdiInfo[WndNum].MdiRadInfo->SelectingItem[0]].Control==CT_LISTBOX){
|
---|
| 497 | //ListBox
|
---|
| 498 | InsertEventToList(hList,i++,"SelChange","LBN_SELCHANGE","リスト内の選択が変更された時");
|
---|
| 499 | InsertEventToList(hList,i++,"DblClick","LBN_DBLCLK","リスト内の文字列がダブル クリックされた時");
|
---|
| 500 | InsertEventToList(hList,i++,"ErrSpace","LBN_ERRSPACE","リストのメモリ割り当てに失敗した時");
|
---|
| 501 | InsertEventToList(hList,i++,"KillFocus","LBN_KILLFOCUS","入力フォーカスを失った時");
|
---|
| 502 | InsertEventToList(hList,i++,"SelCancel","LBN_SELCANCEL","リスト内の選択が取り消された時");
|
---|
| 503 | InsertEventToList(hList,i++,"SetFocus","LBN_SETFOCUS","入力フォーカスを取得した時");
|
---|
| 504 | }
|
---|
| 505 | else if(ProjectInfo.pWindowInfo[WndInfoNum].pChildInfo[MdiInfo[WndNum].MdiRadInfo->SelectingItem[0]].Control==CT_LISTVIEW){
|
---|
| 506 | //ListView
|
---|
| 507 | i=SetDefaultNotifyMessagesInList(hList,CT_LISTVIEW);
|
---|
| 508 | }
|
---|
| 509 | else if(ProjectInfo.pWindowInfo[WndInfoNum].pChildInfo[MdiInfo[WndNum].MdiRadInfo->SelectingItem[0]].Control==CT_PROGRESSBAR){
|
---|
| 510 | //ProgressBar
|
---|
| 511 | InsertEventToList(hList,i++,"OutOfMemory","NM_OUTOFMEMORY","メモリ不足でコントロールの動作が完了できない時");
|
---|
| 512 | }
|
---|
| 513 | else if(ProjectInfo.pWindowInfo[WndInfoNum].pChildInfo[MdiInfo[WndNum].MdiRadInfo->SelectingItem[0]].Control==CT_RADIOBUTTON){
|
---|
| 514 | //RadioButton
|
---|
| 515 | InsertEventToList(hList,i++,"Click","BN_CLICKED","ラジオ ボタンがクリックされた時");
|
---|
| 516 | InsertEventToList(hList,i++,"DblClick","BN_DBLCLK","ラジオ ボタンがダブル クリックされた時");
|
---|
| 517 | }
|
---|
| 518 | else if(ProjectInfo.pWindowInfo[WndInfoNum].pChildInfo[MdiInfo[WndNum].MdiRadInfo->SelectingItem[0]].Control==CT_STATIC){
|
---|
| 519 | //Static
|
---|
| 520 | InsertEventToList(hList,i++,"Click","STN_CLICKED","スタティック テキストがクリックされた時");
|
---|
| 521 | InsertEventToList(hList,i++,"DblClick","STN_DBLCLK","スタティック テキストがダブル クリックされた時");
|
---|
| 522 | }
|
---|
| 523 | else if(ProjectInfo.pWindowInfo[WndInfoNum].pChildInfo[MdiInfo[WndNum].MdiRadInfo->SelectingItem[0]].Control==CT_TRACKBAR){
|
---|
| 524 | //TrackBar
|
---|
| 525 | InsertEventToList(hList,i++,"OutOfMemory","NM_OUTOFMEMORY","メモリ不足でコントロールの動作が完了できない時");
|
---|
| 526 | InsertEventToList(hList,i++,"ReleasedCapture","NM_RELEASEDCAPTURE ","マウス キャプチャ リリースの通知");
|
---|
| 527 | InsertEventToList(hList,i++,"CustomDraw","NM_CUSTOMDRAW ","カスタム描画操作の通知");
|
---|
| 528 | }
|
---|
| 529 | else if(ProjectInfo.pWindowInfo[WndInfoNum].pChildInfo[MdiInfo[WndNum].MdiRadInfo->SelectingItem[0]].Control==CT_TREEVIEW){
|
---|
| 530 | //TreeView
|
---|
| 531 | i=SetDefaultNotifyMessagesInList(hList,CT_TREEVIEW);
|
---|
| 532 | }
|
---|
| 533 | else if(ProjectInfo.pWindowInfo[WndInfoNum].pChildInfo[MdiInfo[WndNum].MdiRadInfo->SelectingItem[0]].Control==CT_UPDOWN){
|
---|
| 534 | //UpDown
|
---|
| 535 | InsertEventToList(hList,i++,"OutOfMemory","NM_OUTOFMEMORY","メモリ不足でコントロールの動作が完了できない時");
|
---|
| 536 | InsertEventToList(hList,i++,"Deltapos","UDN_DELTAPOS","コントロールの位置が変えられようとしている時");
|
---|
| 537 | }
|
---|
| 538 | }
|
---|
| 539 | }
|
---|
| 540 | void Popup_SelectMenu(HWND hDlg){
|
---|
| 541 | extern PROJECTINFO ProjectInfo;
|
---|
| 542 | int i;
|
---|
| 543 | POINT pos;
|
---|
| 544 | HMENU hMenu;
|
---|
| 545 |
|
---|
| 546 | if(ProjectInfo.NumberOfMenu==0) return;
|
---|
| 547 |
|
---|
| 548 | GetCursorPos(&pos);
|
---|
| 549 |
|
---|
| 550 | hMenu=CreatePopupMenu();
|
---|
| 551 |
|
---|
| 552 | MENUITEMINFO mii;
|
---|
| 553 | mii.cbSize=sizeof(MENUITEMINFO);
|
---|
| 554 | for(i=0;i<ProjectInfo.NumberOfMenu;i++){
|
---|
| 555 | if(NowMenuNum==i){
|
---|
| 556 | mii.fMask=MIIM_TYPE|MIIM_ID|MIIM_STATE;
|
---|
| 557 | mii.fState=MFS_CHECKED;
|
---|
| 558 | }
|
---|
| 559 | else mii.fMask=MIIM_TYPE|MIIM_ID;
|
---|
| 560 | mii.fType=MFT_STRING;
|
---|
| 561 | mii.wID=100+i;
|
---|
| 562 | mii.dwTypeData=ProjectInfo.pMenuInfo[i].IdName;
|
---|
| 563 | InsertMenuItem(hMenu,i,1,&mii);
|
---|
| 564 | }
|
---|
| 565 |
|
---|
| 566 | extern HMENU hRadMenuBase;
|
---|
| 567 | TrackPopupMenu(hMenu,TPM_LEFTALIGN,pos.x,pos.y,0,hDlg,0);
|
---|
| 568 |
|
---|
| 569 | DestroyMenu(hMenu);
|
---|
| 570 | }
|
---|
| 571 |
|
---|
| 572 | WNDPROC OldEventListViewProc;
|
---|
| 573 | LRESULT CALLBACK EventListViewProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam){
|
---|
| 574 | if(message==WM_RBUTTONDOWN){
|
---|
| 575 | if(SendDlgItemMessage(GetParent(hwnd),IDC_MENU,BM_GETCHECK,0,0))
|
---|
| 576 | Popup_SelectMenu(GetParent(hwnd));
|
---|
| 577 | return 0;
|
---|
| 578 | }
|
---|
| 579 | return CallWindowProc(OldEventListViewProc,hwnd,message,wParam,lParam);
|
---|
| 580 | }
|
---|
| 581 | BOOL CALLBACK DlgEventCode(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam){
|
---|
| 582 | extern MDIINFO MdiInfo[MAX_WNDNUM];
|
---|
| 583 | extern PROJECTINFO ProjectInfo;
|
---|
| 584 | int WndNum,WndInfoNum,i,i2;
|
---|
| 585 | char temporary[MAX_PATH],temp2[MAX_PATH];
|
---|
| 586 | HWND hList;
|
---|
| 587 | DWORD dwStyle;
|
---|
| 588 | RECT rect;
|
---|
| 589 | LV_COLUMN ListView_Column;
|
---|
| 590 |
|
---|
| 591 | static DWORD dwEventType;
|
---|
| 592 |
|
---|
| 593 | if(message==WM_COMMAND&&100<=wParam&&wParam<200){
|
---|
| 594 | hList=GetDlgItem(hwnd,IDC_EVENTLIST);
|
---|
| 595 | WndNum=GetWndNum(GetWindow(hClient,GW_CHILD));
|
---|
| 596 | WndInfoNum=GetWndInfoNum(MdiInfo[WndNum].path);
|
---|
| 597 |
|
---|
| 598 | ListView_DeleteAllItems(hList);
|
---|
| 599 | SetDlgItemText(hwnd,IDC_PROCEDURENAME,"");
|
---|
| 600 | i=0;
|
---|
| 601 | i2=0;
|
---|
| 602 |
|
---|
| 603 | NowMenuNum=wParam-100;
|
---|
| 604 | SetMenuEventToList(hList,&ProjectInfo.pMenuInfo[wParam-100],&i,&i2);
|
---|
| 605 | }
|
---|
| 606 |
|
---|
| 607 | switch(message){
|
---|
| 608 | case WM_INITDIALOG:
|
---|
| 609 | SetPosCenter(hwnd);
|
---|
| 610 | SetFocus(GetDlgItem(hwnd,IDC_EVENTLIST));
|
---|
| 611 |
|
---|
| 612 | hList=GetDlgItem(hwnd,IDC_EVENTLIST);
|
---|
| 613 | GetClientRect(hList,&rect);
|
---|
| 614 | dwStyle=ListView_GetExtendedListViewStyle(hList);
|
---|
| 615 | dwStyle|=LVS_EX_FULLROWSELECT;
|
---|
| 616 | ListView_SetExtendedListViewStyle(hList,dwStyle);
|
---|
| 617 |
|
---|
| 618 | ListView_Column.mask=LVCF_FMT | LVCF_WIDTH | LVCF_TEXT | LVCF_SUBITEM;
|
---|
| 619 | ListView_Column.fmt=LVCFMT_LEFT;
|
---|
| 620 |
|
---|
| 621 | ListView_Column.cx=100;
|
---|
| 622 | ListView_Column.pszText="イベント";
|
---|
| 623 | ListView_Column.iSubItem=0;
|
---|
| 624 | ListView_InsertColumn(hList,0,&ListView_Column);
|
---|
| 625 |
|
---|
| 626 | ListView_Column.cx=120;
|
---|
| 627 | ListView_Column.pszText="対応メッセージ";
|
---|
| 628 | ListView_Column.iSubItem=1;
|
---|
| 629 | ListView_InsertColumn(hList,1,&ListView_Column);
|
---|
| 630 |
|
---|
| 631 | ListView_Column.cx=rect.right-240;
|
---|
| 632 | ListView_Column.pszText="概要";
|
---|
| 633 | ListView_Column.iSubItem=2;
|
---|
| 634 | ListView_InsertColumn(hList,2,&ListView_Column);
|
---|
| 635 |
|
---|
| 636 | dwEventType=lParam;
|
---|
| 637 | SetEventToList(hwnd,dwEventType);
|
---|
| 638 | EnableWindow(GetDlgItem(hwnd,IDOK),0);
|
---|
| 639 |
|
---|
[302] | 640 | OldEventListViewProc=(WNDPROC)GetWindowLongPtr(GetDlgItem(hwnd,IDC_EVENTLIST),GWLP_WNDPROC);
|
---|
| 641 | SetWindowLongPtr(GetDlgItem(hwnd,IDC_EVENTLIST),GWLP_WNDPROC,(long)EventListViewProc);
|
---|
[3] | 642 |
|
---|
| 643 | WndNum=GetWndNum(GetWindow(hClient,GW_CHILD));
|
---|
| 644 | WndInfoNum=GetWndInfoNum(MdiInfo[WndNum].path);
|
---|
| 645 | NowMenuNum=GetMenuInfoNum(ProjectInfo.pWindowInfo[WndInfoNum].MenuID);
|
---|
| 646 | break;
|
---|
| 647 | case WM_COMMAND:
|
---|
| 648 | switch(LOWORD(wParam)){
|
---|
| 649 | case IDC_DEFAULT:
|
---|
| 650 | dwEventType=EVENTTYPE_DEFAULT;
|
---|
| 651 | SetEventToList(hwnd,dwEventType);
|
---|
| 652 | EnableWindow(GetDlgItem(hwnd,IDOK),0);
|
---|
| 653 | break;
|
---|
| 654 | case IDC_MENU:
|
---|
| 655 | dwEventType=EVENTTYPE_MENU;
|
---|
| 656 | SetEventToList(hwnd,dwEventType);
|
---|
| 657 | EnableWindow(GetDlgItem(hwnd,IDOK),0);
|
---|
| 658 |
|
---|
| 659 | //「対象メニュー」選択メニューを表示
|
---|
| 660 | Popup_SelectMenu(hwnd);
|
---|
| 661 | break;
|
---|
| 662 | case IDC_MMSYS:
|
---|
| 663 | dwEventType=EVENTTYPE_MMSYS;
|
---|
| 664 | SetEventToList(hwnd,dwEventType);
|
---|
| 665 | EnableWindow(GetDlgItem(hwnd,IDOK),0);
|
---|
| 666 | break;
|
---|
| 667 | case IDOK:
|
---|
| 668 | hList=GetDlgItem(hwnd,IDC_EVENTLIST);
|
---|
| 669 | WndNum=GetWndNum(GetWindow(hClient,GW_CHILD));
|
---|
| 670 | WndInfoNum=GetWndInfoNum(MdiInfo[WndNum].path);
|
---|
| 671 | if(GetEventProcedureNameFromListView(hList,WndNum,WndInfoNum,temporary,temp2,dwEventType)){
|
---|
| 672 | SelectProcedureOfMessageCall(WndInfoNum,temporary,temp2);
|
---|
| 673 | EndDialog(hwnd,0);
|
---|
| 674 | }
|
---|
| 675 | return 1;
|
---|
| 676 | case IDCANCEL:
|
---|
| 677 | EndDialog(hwnd,0);
|
---|
| 678 | return 1;
|
---|
| 679 | }
|
---|
| 680 | break;
|
---|
| 681 | case WM_NOTIFY:
|
---|
| 682 | NMLISTVIEW *nmListView;
|
---|
| 683 | nmListView=(NMLISTVIEW *)lParam;
|
---|
| 684 | if(nmListView->hdr.idFrom==IDC_EVENTLIST){
|
---|
| 685 | if(nmListView->hdr.code==LVN_ITEMCHANGED){
|
---|
| 686 | hList=GetDlgItem(hwnd,IDC_EVENTLIST);
|
---|
| 687 | WndNum=GetWndNum(GetWindow(hClient,GW_CHILD));
|
---|
| 688 | WndInfoNum=GetWndInfoNum(MdiInfo[WndNum].path);
|
---|
| 689 | if(GetEventProcedureNameFromListView(hList,WndNum,WndInfoNum,temporary,temp2,dwEventType)){
|
---|
| 690 | sprintf(temporary+lstrlen(temporary),"(%s)",temp2);
|
---|
| 691 | EnableWindow(GetDlgItem(hwnd,IDOK),1);
|
---|
| 692 | }
|
---|
| 693 | else{
|
---|
| 694 | temporary[0]=0;
|
---|
| 695 | EnableWindow(GetDlgItem(hwnd,IDOK),0);
|
---|
| 696 | }
|
---|
| 697 | SetDlgItemText(hwnd,IDC_PROCEDURENAME,temporary);
|
---|
| 698 | return 1;
|
---|
| 699 | }
|
---|
| 700 | else if(nmListView->hdr.code==NM_DBLCLK)
|
---|
| 701 | SendMessage(hwnd,WM_COMMAND,IDOK,0);
|
---|
| 702 | }
|
---|
| 703 | break;
|
---|
| 704 | }
|
---|
| 705 | return 0;
|
---|
| 706 | }
|
---|