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