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