I started working on the accelerator tables. To my surprise, accelerators meant a lot of new code. Beginning with APIs to be implemented:
WinCreateAccelTable
WinDestroyAccelTable
WinSetAccelTable
WinTranslateAccel
Structs to be created:
ACCEL
ACCELTABLE
And then customize the existing code to work as OS/2 does.
I felt short of finishing the implementation. I still need to verify that the commands are being sent. This is because I don't even know if the normal menus are sending commands.
Then I decided to go and finish the popup menus. I discovered how ignorant I was about the subject and that the initial implementation I had made was useless. First my notion of creating and displaying the popup was totally wrong. I placed the creation of the window and the displaying under the same method.
I then learned that the displaying was done when the WM_CONTEXTMENU message was capture (this is basic for some PM knowledge, but I'm new). I implemented the method on the Control class and I was able to see the message being capture there, and then I used WinPopupMenu API to display the popup. So far no luck, I'm being helped bye some people and I hope today I will finally see the menu.
Friday, May 30, 2008
Thursday, May 22, 2008
A new approach
I changed jobs and of course changes bring new challenges. I lost the only way I had of commiting the work, hence there have been no new updates to the SVN server.
I decided to work on the acceleration tables for the Menu object and I found out that there is a lot of work to do to enable them. First I have to implement a new API call "WinCreateAccelTable" and with it a new object "ACCELTABLE". I'll probably encounter new problems with memory handling using JNI. After all is implemented I'll need to create a testcase to test all that.
So for the time being I'll be busy.
Also I have created a new environment to develop. In a Virtual PC I installed a ECS RC4 and all the tools necessary to develop. The idea is to pass that on to other developers that don't have access to the right tools. My work is going to be complete tomorrow, then I'll have to find the way to share such a large file
I decided to work on the acceleration tables for the Menu object and I found out that there is a lot of work to do to enable them. First I have to implement a new API call "WinCreateAccelTable" and with it a new object "ACCELTABLE". I'll probably encounter new problems with memory handling using JNI. After all is implemented I'll need to create a testcase to test all that.
So for the time being I'll be busy.
Also I have created a new environment to develop. In a Virtual PC I installed a ECS RC4 and all the tools necessary to develop. The idea is to pass that on to other developers that don't have access to the right tools. My work is going to be complete tomorrow, then I'll have to find the way to share such a large file
Thursday, April 24, 2008
A working menu and something else
Old errors coming back
Developing the testcase I came across an error like the one I had with the insert code for notebooks and tabs. Only this time I decided I wasn't going to give up. I went over the code many times to verify that this new error wasn't mine.
The call was MM_QUERYITEM, where you have to pass the ID of the item to be queried, whether or not you want to include the submenus on the search and a pointer to a MENUITEM structure.
I created a menuitem and gave it a 100d as it's ID value. I knew it worked because the call SETITEMTEXT, using that ID was working (I was seeing the text). Still the call to query the item would not return. Then I decided to debug the parameters on the C call. I just printed the values of the parameters. Everything looked fine, the first parameter was in fact a handle and the same one being created and used on the Java code. The message was the right one (0x182) and the third parameter looked just fine with the value of 640001 for MPFROM2SHORT(100, TRUE). Still the call didn't work.
After more debug messages I decided to make a parallel call this time using my own variables. At first I used only the MENUITEM parameter different from the rest. I passed a null pointer. Still no luck.
Finally I decided to ignore the third parameter and used MPFROM2SHORT(100, TRUE) directly on the call. Surprised,,, it worked. To find out why I then printed the result value of that macro and "bingo",, I got 10064!!! the right result only reversed from what I was getting from Java.
Scary to think that the macro being used extensively on the port is broken.
The good is that probably that is going to fix the problem I had with the insertion of tabs.
The bad is that probably I'm going to see some new stuff broken.
Tonight we will see
The call was MM_QUERYITEM, where you have to pass the ID of the item to be queried, whether or not you want to include the submenus on the search and a pointer to a MENUITEM structure.
I created a menuitem and gave it a 100d as it's ID value. I knew it worked because the call SETITEMTEXT, using that ID was working (I was seeing the text). Still the call to query the item would not return. Then I decided to debug the parameters on the C call. I just printed the values of the parameters. Everything looked fine, the first parameter was in fact a handle and the same one being created and used on the Java code. The message was the right one (0x182) and the third parameter looked just fine with the value of 640001 for MPFROM2SHORT(100, TRUE). Still the call didn't work.
After more debug messages I decided to make a parallel call this time using my own variables. At first I used only the MENUITEM parameter different from the rest. I passed a null pointer. Still no luck.
Finally I decided to ignore the third parameter and used MPFROM2SHORT(100, TRUE) directly on the call. Surprised,,, it worked. To find out why I then printed the result value of that macro and "bingo",, I got 10064!!! the right result only reversed from what I was getting from Java.
Scary to think that the macro being used extensively on the port is broken.
The good is that probably that is going to fix the problem I had with the insertion of tabs.
The bad is that probably I'm going to see some new stuff broken.
Tonight we will see
Thursday, April 10, 2008
Some success
Finally a break. After sitting in front of the code for a while and looking at some examples I found on the web, I found the problem with my menu code. I was using the desktop as the parent of the the menu instead of using the window frame (I'm talking about a menu bar). When I changed it I got my empty menu bar.
Now I'm working on the code to add menus to other menus. So far I'm working to understand the Windows code. I believe today I'm going to have a nice looking menu with text on it and if I do I'll post it tomorrow.
Now I'm working on the code to add menus to other menus. So far I'm working to understand the Windows code. I believe today I'm going to have a nice looking menu with text on it and if I do I'll post it tomorrow.
Wednesday, April 9, 2008
I'm back
I haven't posted here for a while and there are lots of reasons, but it can be summarized as life. Anyway, I kept on adding methods to the Menu and MenuItem classes and now I'm testing things against a testcase. The problem is that I see no menu so far. I'll keep on working until I see some result.
Thursday, January 3, 2008
Slow work
I'm sorry to report that I haven't been working too much on the port. Christmas, New Year and all the activities of the closing year have kept me really busy with life. Now I'm less than a month away from my wedding and there are still so many things to finish so there is no way I'll have much time to sit on the computer and program code. Still I have some code that needs to be commited to the CVS, and I'll see if I can find time to do that.
Just hoping that people can solve the problams they have with the trunk.
Just hoping that people can solve the problams they have with the trunk.
Subscribe to:
Posts (Atom)


