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