1 | #include "stdafx.h"
|
---|
2 |
|
---|
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;
|
---|
21 |
|
---|
22 | ActiveBasic::PM::WindowInfo *pWindowInfo = projectInfo.windowInfos[WndInfoNum];
|
---|
23 | BOOST_FOREACH( ActiveBasic::PM::ChildWindowInfo *pChildInfo, pWindowInfo->childWindowInfos )
|
---|
24 | {
|
---|
25 | if( pChildInfo->GetName() == buffer )
|
---|
26 | {
|
---|
27 | return pChildInfo->Control;
|
---|
28 | }
|
---|
29 | }
|
---|
30 |
|
---|
31 | return 0;
|
---|
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 |
|
---|
38 | ActiveBasic::PM::WindowInfo *pWindowInfo = projectInfo.windowInfos[WndInfoNum];
|
---|
39 |
|
---|
40 | NameLen=pWindowInfo->GetName().size();
|
---|
41 | CallBackNameLen=pWindowInfo->GetCallbackName().size();
|
---|
42 |
|
---|
43 | buffer = ReadBuffer( projectInfo.GetWorkDir().GetPath() + pWindowInfo->GetSourceFileNameForOldVer( projectInfo.GetWorkDir().GetPath() ) );
|
---|
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 |
|
---|
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++;
|
---|
67 | }
|
---|
68 | continue;
|
---|
69 | }
|
---|
70 |
|
---|
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++;
|
---|
75 | while(buffer[i2]==' '||buffer[i2]=='\t') i2++;
|
---|
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;
|
---|
85 | break;
|
---|
86 | }
|
---|
87 | temporary[i3]=buffer[i2];
|
---|
88 | }
|
---|
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 | }
|
---|
116 | }
|
---|
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;
|
---|
125 | }
|
---|
126 | }
|
---|
127 | }
|
---|
128 | }
|
---|
129 | HeapDefaultFree(buffer);
|
---|
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 |
|
---|
140 | ActiveBasic::PM::WindowInfo *pWindowInfo = projectInfo.windowInfos[WndInfoNum];
|
---|
141 |
|
---|
142 | hChild=OpenFileWithExtension( projectInfo.GetWorkDir().GetPath() + pWindowInfo->GetSourceFileNameForOldVer( projectInfo.GetWorkDir().GetPath() ) );
|
---|
143 | if(!hChild) return;
|
---|
144 | WndNum=GetWndNum(hChild);
|
---|
145 |
|
---|
146 | pBuf=MdiInfo[WndNum]->pMdiTextEdit->buffer;
|
---|
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 | }
|
---|
201 | SetFocus(MdiInfo[WndNum]->pMdiTextEdit->hEdit);
|
---|
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 |
|
---|
224 | ActiveBasic::PM::WindowInfo *pWindowInfo = projectInfo.windowInfos[WndInfoNum];
|
---|
225 |
|
---|
226 | MaxCount=ListView_GetItemCount(hList);
|
---|
227 | if(MdiInfo[WndNum]->MdiRadInfo->SelectingItem[0]==SELECT_WINDOW){
|
---|
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",
|
---|
233 | pWindowInfo->GetName().c_str(),
|
---|
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",
|
---|
272 | pWindowInfo->GetName().c_str(),
|
---|
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",
|
---|
286 | pWindowInfo->GetName().c_str(),
|
---|
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",
|
---|
301 | pWindowInfo->GetName().c_str(),
|
---|
302 | pWindowInfo->childWindowInfos[MdiInfo[WndNum]->MdiRadInfo->SelectingItem[0]]->GetName().c_str(),
|
---|
303 | temporary);
|
---|
304 | break;
|
---|
305 | }
|
---|
306 | }
|
---|
307 | if(i==MaxCount) return 0;
|
---|
308 |
|
---|
309 | if(pWindowInfo->childWindowInfos[MdiInfo[WndNum]->MdiRadInfo->SelectingItem[0]]->Control==CT_LISTVIEW){
|
---|
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 | }
|
---|
333 | else if(pWindowInfo->childWindowInfos[MdiInfo[WndNum]->MdiRadInfo->SelectingItem[0]]->Control==CT_PROGRESSBAR){
|
---|
334 | //ProgressBar
|
---|
335 | lstrcpy(Parameter,"ByRef nmHdr As NMHDR");
|
---|
336 | }
|
---|
337 | else if(pWindowInfo->childWindowInfos[MdiInfo[WndNum]->MdiRadInfo->SelectingItem[0]]->Control==CT_TRACKBAR){
|
---|
338 | //TrackBar
|
---|
339 | lstrcpy(Parameter,"ByRef nmHdr As NMHDR");
|
---|
340 | }
|
---|
341 | else if(pWindowInfo->childWindowInfos[MdiInfo[WndNum]->MdiRadInfo->SelectingItem[0]]->Control==CT_TREEVIEW){
|
---|
342 | //TreeView
|
---|
343 | if(0<=i&&i<=7) lstrcpy(Parameter,"ByRef nmHdr As NMHDR");
|
---|
344 | else lstrcpy(Parameter,"ByRef nmTreeView As NMTREEVIEW");
|
---|
345 | }
|
---|
346 | else if(pWindowInfo->childWindowInfos[MdiInfo[WndNum]->MdiRadInfo->SelectingItem[0]]->Control==CT_UPDOWN){
|
---|
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){
|
---|
398 | int i,i2,WndNum;
|
---|
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));
|
---|
406 | ActiveBasic::PM::WindowInfo *pWindowInfo = GetWndInfo(MdiInfo[WndNum]->path);
|
---|
407 | i=0;
|
---|
408 | if(MdiInfo[WndNum]->MdiRadInfo->SelectingItem[0]==SELECT_WINDOW){
|
---|
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);
|
---|
444 | if( pWindowInfo->HasMenu() )
|
---|
445 | {
|
---|
446 | int MenuInfoNum;
|
---|
447 | MenuInfoNum=GetMenuInfoNum(pWindowInfo->GetMenuIdName().c_str());
|
---|
448 | i=0;
|
---|
449 | i2=0;
|
---|
450 |
|
---|
451 | SetMenuEventToList(hList,&projectInfo.pMenuInfo[MenuInfoNum],&i,&i2);
|
---|
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);
|
---|
464 | if(pWindowInfo->childWindowInfos[MdiInfo[WndNum]->MdiRadInfo->SelectingItem[0]]->Control==CT_BUTTON){
|
---|
465 | //Button
|
---|
466 | InsertEventToList(hList,i++,"Click","BN_CLICKED","ボタンがクリックされた時");
|
---|
467 | InsertEventToList(hList,i++,"DblClick","BN_DBLCLK","ボタンがダブル クリックされた時");
|
---|
468 | }
|
---|
469 | else if(pWindowInfo->childWindowInfos[MdiInfo[WndNum]->MdiRadInfo->SelectingItem[0]]->Control==CT_CHECKBOX){
|
---|
470 | //CheckBox
|
---|
471 | InsertEventToList(hList,i++,"Click","BN_CLICKED","チェック ボックスがクリックされた時");
|
---|
472 | InsertEventToList(hList,i++,"DblClick","BN_DBLCLK","チェック ボックスがダブル クリックされた時");
|
---|
473 | }
|
---|
474 | else if(pWindowInfo->childWindowInfos[MdiInfo[WndNum]->MdiRadInfo->SelectingItem[0]]->Control==CT_COMBOBOX){
|
---|
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 | }
|
---|
488 | else if(pWindowInfo->childWindowInfos[MdiInfo[WndNum]->MdiRadInfo->SelectingItem[0]]->Control==CT_EDIT){
|
---|
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 | }
|
---|
499 | else if(pWindowInfo->childWindowInfos[MdiInfo[WndNum]->MdiRadInfo->SelectingItem[0]]->Control==CT_IMAGEBOX){
|
---|
500 | //ImageBox
|
---|
501 | InsertEventToList(hList,i++,"Click","STN_CLICKED","イメージ ボックスがクリックされた時");
|
---|
502 | InsertEventToList(hList,i++,"DblClick","STN_DBLCLK","イメージ ボックスがダブル クリックされた時");
|
---|
503 | }
|
---|
504 | else if(pWindowInfo->childWindowInfos[MdiInfo[WndNum]->MdiRadInfo->SelectingItem[0]]->Control==CT_LISTBOX){
|
---|
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 | }
|
---|
513 | else if(pWindowInfo->childWindowInfos[MdiInfo[WndNum]->MdiRadInfo->SelectingItem[0]]->Control==CT_LISTVIEW){
|
---|
514 | //ListView
|
---|
515 | i=SetDefaultNotifyMessagesInList(hList,CT_LISTVIEW);
|
---|
516 | }
|
---|
517 | else if(pWindowInfo->childWindowInfos[MdiInfo[WndNum]->MdiRadInfo->SelectingItem[0]]->Control==CT_PROGRESSBAR){
|
---|
518 | //ProgressBar
|
---|
519 | InsertEventToList(hList,i++,"OutOfMemory","NM_OUTOFMEMORY","メモリ不足でコントロールの動作が完了できない時");
|
---|
520 | }
|
---|
521 | else if(pWindowInfo->childWindowInfos[MdiInfo[WndNum]->MdiRadInfo->SelectingItem[0]]->Control==CT_RADIOBUTTON){
|
---|
522 | //RadioButton
|
---|
523 | InsertEventToList(hList,i++,"Click","BN_CLICKED","ラジオ ボタンがクリックされた時");
|
---|
524 | InsertEventToList(hList,i++,"DblClick","BN_DBLCLK","ラジオ ボタンがダブル クリックされた時");
|
---|
525 | }
|
---|
526 | else if(pWindowInfo->childWindowInfos[MdiInfo[WndNum]->MdiRadInfo->SelectingItem[0]]->Control==CT_STATIC){
|
---|
527 | //Static
|
---|
528 | InsertEventToList(hList,i++,"Click","STN_CLICKED","スタティック テキストがクリックされた時");
|
---|
529 | InsertEventToList(hList,i++,"DblClick","STN_DBLCLK","スタティック テキストがダブル クリックされた時");
|
---|
530 | }
|
---|
531 | else if(pWindowInfo->childWindowInfos[MdiInfo[WndNum]->MdiRadInfo->SelectingItem[0]]->Control==CT_TRACKBAR){
|
---|
532 | //TrackBar
|
---|
533 | InsertEventToList(hList,i++,"OutOfMemory","NM_OUTOFMEMORY","メモリ不足でコントロールの動作が完了できない時");
|
---|
534 | InsertEventToList(hList,i++,"ReleasedCapture","NM_RELEASEDCAPTURE ","マウス キャプチャ リリースの通知");
|
---|
535 | InsertEventToList(hList,i++,"CustomDraw","NM_CUSTOMDRAW ","カスタム描画操作の通知");
|
---|
536 | }
|
---|
537 | else if(pWindowInfo->childWindowInfos[MdiInfo[WndNum]->MdiRadInfo->SelectingItem[0]]->Control==CT_TREEVIEW){
|
---|
538 | //TreeView
|
---|
539 | i=SetDefaultNotifyMessagesInList(hList,CT_TREEVIEW);
|
---|
540 | }
|
---|
541 | else if(pWindowInfo->childWindowInfos[MdiInfo[WndNum]->MdiRadInfo->SelectingItem[0]]->Control==CT_UPDOWN){
|
---|
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 |
|
---|
553 | if(projectInfo.NumberOfMenu==0) return;
|
---|
554 |
|
---|
555 | GetCursorPos(&pos);
|
---|
556 |
|
---|
557 | hMenu=CreatePopupMenu();
|
---|
558 |
|
---|
559 | MENUITEMINFO mii;
|
---|
560 | mii.cbSize=sizeof(MENUITEMINFO);
|
---|
561 | for(i=0;i<projectInfo.NumberOfMenu;i++){
|
---|
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;
|
---|
569 | mii.dwTypeData=projectInfo.pMenuInfo[i].IdName;
|
---|
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));
|
---|
601 | WndInfoNum=GetWndInfoNum(MdiInfo[WndNum]->path);
|
---|
602 |
|
---|
603 | ListView_DeleteAllItems(hList);
|
---|
604 | SetDlgItemText(hwnd,IDC_PROCEDURENAME,"");
|
---|
605 | i=0;
|
---|
606 | i2=0;
|
---|
607 |
|
---|
608 | NowMenuNum=wParam-100;
|
---|
609 | SetMenuEventToList(hList,&projectInfo.pMenuInfo[wParam-100],&i,&i2);
|
---|
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 |
|
---|
645 | OldEventListViewProc=(WNDPROC)GetWindowLongPtr(GetDlgItem(hwnd,IDC_EVENTLIST),GWLP_WNDPROC);
|
---|
646 | SetWindowLongPtr(GetDlgItem(hwnd,IDC_EVENTLIST),GWLP_WNDPROC,(long)EventListViewProc);
|
---|
647 |
|
---|
648 | {
|
---|
649 | WndNum=GetWndNum(GetWindow(hClient,GW_CHILD));
|
---|
650 | ActiveBasic::PM::WindowInfo *pWindowInfo = GetWndInfo(MdiInfo[WndNum]->path);
|
---|
651 | NowMenuNum=GetMenuInfoNum(pWindowInfo->GetMenuIdName().c_str());
|
---|
652 | }
|
---|
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));
|
---|
677 | WndInfoNum=GetWndInfoNum(MdiInfo[WndNum]->path);
|
---|
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));
|
---|
695 | WndInfoNum=GetWndInfoNum(MdiInfo[WndNum]->path);
|
---|
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 | }
|
---|