<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=Content-Type content="text/html; charset=iso-8859-1">
<META content="MSHTML 6.00.2716.2200" name=GENERATOR>
<STYLE></STYLE>
</HEAD>
<BODY bgColor=#ffffff>
<DIV><FONT face="Courier New">Dear WINE developers,</FONT></DIV>
<DIV> </DIV>
<DIV><FONT face="Courier New">I develop an MS windows app and just got it
working under<BR>WINE/Linux. It's call LTspice/SwitcherCADIII. It's
a<BR>free schematic capture/SPICE simulator obtainable from<BR><A
href="http://www.linear.com/software">www.linear.com/software</A>.
</FONT></DIV>
<DIV> </DIV>
<DIV><FONT face="Courier New">I've noticed a few things about WINE that might
help you<BR>improve it. WINE can confuse SendMessage() with
PostMessage().<BR>LTspice uses SendMessage to handshake between
threads<BR>sometimes. Wine usually obeys the difference, but
treated<BR>some SendMessage calls like a PostMessage. My
workaround</FONT></DIV>
<DIV><FONT face="Courier New">was to poll volatile global
variables.</FONT></DIV>
<DIV> </DIV>
<DIV><FONT face="Courier New">I needed to add some redraws to clear up some
differences<BR>between WINE and Windows dialog box updates. This was
for</FONT></DIV>
<DIV><FONT face="Courier New">a tab control that make different controls on the
pane</FONT></DIV>
<DIV><FONT face="Courier New">visible or not depending on tab selection.
Also LTspice<BR>draws directly to the screen and carefully counts the<BR>number
of times it XOR'ed something with the screen. That<BR>behaved a bit
different between WINE and Windows. Again,<BR>I found workarounds for
most of it. I'm not sure, but maybe<BR>it's just a difference between
obeying the SetROP2() setting<BR>for CDC::SetPixel() calls.</FONT></DIV>
<DIV><FONT face="Courier New"></FONT> </DIV>
<DIV><FONT face="Courier New">The version of LTspice I put up on the web today,
2.01c,<BR>works quite well under WINE/Linux. The main problem<BR>with it
is that the RoboHelp isn't working. Any advice<BR>there?</FONT></DIV>
<DIV><FONT face="Courier New"></FONT> </DIV>
<DIV><FONT face="Courier New">A few other WINE issues:</FONT></DIV>
<DIV><FONT face="Courier New"></FONT> </DIV>
<DIV><FONT face="Courier New">1. The icons drawn on Property sheet tabs
have a black<BR> background in WINE. In Windows it's the
background<BR> color. You can see the problem on the
Tools=>Control<BR> Panel tab icons.</FONT></DIV>
<DIV> </DIV>
<DIV><FONT face="Courier New">2. The resize grip on the lower right hand
corner of resizeable<BR> dialogs is drawn like a
scrollbar. The "proper" windows<BR> method to draw these
resize grips is to use a scroll bar<BR> created like
this:</FONT></DIV>
<DIV> </DIV>
<DIV><FONT face="Courier New"> CScrollBar m_Grip;</FONT></DIV>
<DIV> </DIV>
<DIV><FONT face="Courier New"> char OldResizableGrip[] =
"OldResizableGrip";<BR> LRESULT CALLBACK GripWindowProc(HWND
hwnd, UINT msg, WPARAM wParam,LPARAM lParam)<BR>
{<BR> if(WM_NCHITTEST ==
msg)<BR>
return(HTBOTTOMRIGHT); // the mouse cursor that goes with a grip on the bottom
right of a window<BR> HANDLE oldWndProc =
GetProp(hwnd, OldResizableGrip);<BR>
if(WM_DESTROY == msg) //
unsubclass<BR>
{<BR> RemoveProp(hwnd,
OldResizableGrip);<BR>
SetWindowLong(hwnd, GWL_WNDPROC, (LONG)
oldWndProc);<BR>
}<BR> return(CallWindowProc((WNDPROC)
oldWndProc, hwnd, msg, wParam,lParam));<BR> }</FONT></DIV>
<DIV> </DIV>
<DIV><FONT face="Courier New"> BOOL
CSelectWaveformsDlg::OnInitDialog()<BR>
{<BR>
CDialog::OnInitDialog();<BR>
SetAllListBoxItems();<BR> CRect rect(0, 0,
GetSystemMetrics(SM_CXVSCROLL),GetSystemMetrics(SM_CYHSCROLL));<BR>
m_Grip.Create(WS_CHILD | WS_CLIPSIBLINGS | SBS_SIZEGRIP | WS_VISIBLE,rect, this,
AFX_IDW_SIZE_BOX);<BR> CWnd *resizeWnd =
GetDlgItem(AFX_IDW_SIZE_BOX);<BR>
if(resizeWnd)<BR>
{<BR> CRect rect,
rect2;<BR>
resizeWnd->GetWindowRect(&rect);<BR>
GetClientRect(rect2);<BR>
rect2.left = rect2.right -
rect.Width();<BR>
rect2.top = rect2.bottom -
rect.Height();<BR>
resizeWnd->MoveWindow(&rect2,
FALSE);<BR>
::SetProp(m_Grip, OldResizableGrip,
(HANDLE)<BR>
::GetWindowLong(m_Grip,
GWL_WNDPROC));<BR>
::SetWindowLong(m_Grip, GWL_WNDPROC, (LONG)
GripWindowProc);<BR>
}<BR> return(TRUE);<BR>
}</FONT></DIV>
<DIV> </DIV>
<DIV><FONT face="Courier New">3. Function key F6 is not
trapped.</FONT></DIV>
<DIV><FONT face="Courier New"></FONT> </DIV>
<DIV><FONT face="Courier New">4. The cursor colors are off. For
example, the voltage probe<BR> cursor should have a red
body. In WINE it's black. The sleeve<BR> of the
pointing hand is blue, in WINE it's black.</FONT></DIV>
<DIV><FONT face="Courier New"></FONT> </DIV>
<DIV><FONT face="Courier New">5. Font's aren't always correct.
There's two types for schematics, "Arial"<BR> and "New
Courier". The Arial can become italic depending on the
size<BR> required.</FONT></DIV>
<DIV> </DIV>
<DIV><FONT face="Courier New">I would like to know if there is a way to
determine if my app is running<BR>under WINE under runtime. That way I can
work around more of these<BR>problems without imparing its performance under MS
Windows. If you know<BR>the answer, please e-mail me
directly.</FONT></DIV>
<DIV> </DIV>
<DIV><FONT face="Courier New">--Mike Engelhardt<BR><A
href="mailto:pmte@concentric.net">pmte@concentric.net</A><BR></FONT></DIV></BODY></HTML>