Quote: If XP doesn't contain things you can't change within its own system, then why is there still a copy of TweakUI for it and most of the registry hacks at www.regedit.com almost all 2000/XP hacks? Hey - I didn't say XP couldn't be tweaked, I was asking what you can do in previous versions that you can't do in XP.
Quote: Ironically, everyone one of the hacks on the front page there today involve ways to secure the system from anyone changing certain settings or using certain services that MS never provided a direct way to disable (at least without disabling them completely, so they don't even run). I guess people aren't aware of the group policy editor, or the local security settings? Yes, it's only on XP pro, but, well, XP home is not meant for the power user.
Quote: And yes, I understand what you mean by languages being 'designed' to do specific things. But lets look at C++ for a moment. You may have to be completely insane with the efficiency of modern compilers to want to do it, but it 'lets' you use assembly if/when you have to.
No - C++ doesn't "let" you use assembly - your *compiler* lets you use assembly.
Besides, weren't you the one complaining about not having low-level access? :P Why are you denigrating the use of assembly?
Quote: VB lets you... use API calls, many of which should be functions inside the existing objects. Why for example do you need an API call to get the client rectangle of a window, but the window object is happy to supply you with full window size? Because it's not used enough. VB is not meant for "power apps" that would need to access such things.
Quote: You also can't get this information directly in VB, so you still can't calculate it without the API call. Why isn't it a property of the window object again??? Probably because the object is an abstraction, and itself may not be aware of the client rectangle. It doesn't need to be.
Quote: I getter really frustrated when I look at MS' site for a clue how to use the API and it turns out you need the header files for VC++ anyway, since they decided to save space by not giving the actually values of any of the flags for those calls. Eh!! Of course they did. VB comes with an API explorer or something like that, that has a full database of all the API functions you can call, the constant values, etc. And if not, you can always check the VC++ MSDN documentation online for free.
Quote: So, forgive me if I and a lot of other people think that the biggest issue with VB isn't its limitations, so much as the artificially induced limitations that MS gave it by deciding that certain basic information about the objects you use in it shouldn't be available without a) resorting to API calls or b) coding a few hundred lines of C++ into a new dll, just to get back 'one' feature they left out. You can't have your cake and eat it too. The language is meant to be simple, a high level abstraction to make basic GUIs easy to do for non-programmers.
Quote: That's just dumb imho. But then, relying on runtime libraries wasn't terribly bright either. Umm, dude, *every single language* has a runtime library of some sort. Why shouldn't VB?
Amendment: Alright, perhaps not pure Assembly... what I meant is that every single higher level language - yes, even C - has a runtime library for the built-in language routines (like malloc, for example.)
Quote: What exactly prevented then from making VB a front end to VC++, so that the pre-compiler just translated the VB into C++ before compiling? Because that wasn't the point of the language.
Quote: I can't see how that would have been any different than using templates in VC++ to 'design' anything. I don't think you quite understand what C++ templates are. You don't "design" things - especially not GUIs - with templates. Templates are for generic programming.
Quote: Anyway. My real problem.. I know that what I need I can do in a week with VB, if only it provided the one feature I need to complete it. I'm still not convinced that you can't. C++ makes the same API calls that VB does. You probably just haven't found the right one.
A minute of Googling revealed the GetClientRect function, which seems to do what you want.
Here is the MSDN documentation page.
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/WinUI/WindowsUserInterface/Windowing/Windows/WindowReference/WindowFunctions/GetClientRect.asp |