The border in the first picture is just a normal border like most windows have, but because the listview control has a border too, very close to the parent window border, it looks like a very big border. The second window has no border at all, the border is custom drawn. The window only has the WS_POPUP style (iirc). On Iczelion's site I think there is an example of custom drawn windows. Thomas P.S. why would MASM not be able to do the same things as TASM? This message was edited by Thomas, on 5/20/2001 3:13:04 PM
Posted on 2001-05-20 15:11:00 by Thomas
disease, The trick is to look at the styles for CreateWindowEx() and test out various combinations. From memory the only true borderless window is a WS_POPUP with WS_VISIBLE. A borderless window has no title bar or system controls at all. Regards,
Posted on 2001-05-21 04:03:00 by hutch--
You might want to try this linker option: /subsystem:windows,3.1 Under Win9x, this changes the appearance of some windows.
Posted on 2001-05-24 23:35:00 by tank
3.1 gave me a warning and said the default was used 3.10 worked, though
Posted on 2001-05-25 00:22:00 by Sloat
If you still have that source I sent you for the Unprexistence GUI that used a borderless windows.If you remove all the drawing commands and run it all you'll get is a black box, perfect to start from scratch with.
Posted on 2001-05-26 18:02:00 by Zadkiel

 i lost the source. ;)
 i tried to compiled many time, but got too many errors. is it only
 after i deleted that i then realize that the reason it couldn't
 compile was because the resource file was mission. ;)
Posted on 2001-05-26 19:01:00 by disease_2000
Heres some new code striped down to the basics. Sorry I couldn't upload it but its not too long. Just copy and paste. Note all the code inside the WM_MOUSEMOVE and WM_LBUTTONDOWM messages allows for moving and resizing the window. Also note the WS_BORDER or WS_POPUP styles in the CreatWindowEx proc, their the only styles you need for the type of border you want, but then you'll need the control window movement as I've done here.

.386
.model flat,stdcall
option casemap:none

include  \masm32\include\windows.inc
include  \masm32\include\user32.inc
include  \masm32\include\kernel32.inc
include  \masm32\include\gdi32.inc
include  \masm32\include\masm32.inc

includelib  \masm32\lib\user32.lib
includelib  \masm32\lib\kernel32.lib
includelib  \masm32\lib\gdi32.lib
includelib	\masm32\lib\masm32.lib

WinMain proto :DWORD,:DWORD,:DWORD,:DWORD
WndProc proto :DWORD,:DWORD,:DWORD,:DWORD

Int2Real32 macro val
	fild	val
	fstp	val
endm

BrdStruct Struct
	Left dd ?
	Right dd ?
	Bottom dd ?
	Top dd ?
	RightMod dd ?
	BottomMod dd ?
BrdStruct Ends

WNDStruct Struct
	CaptionBar dd ?
	Border BrdStruct {?}
	rect RECT {?}
WNDStruct ends

.data
ClassName db "GUI",0
AppName  db "GUI Base",0

WND WNDStruct {20, {5, 5, 5, 5, ?, ?}, {?}}
.data?
pBuffer dd ?
pBufferB dd ?
hBuffer dd ?

hInstance HINSTANCE ?
hWindow dd ?
CommandLine LPSTR ?
Buffer db 32 dup(?)
rect RECT {?}

.code
start:
	invoke GetModuleHandle, NULL
	mov    hInstance,eax
	invoke GetCommandLine
	mov    CommandLine,eax
	invoke WinMain, hInstance,NULL,CommandLine, SW_SHOWDEFAULT
	invoke ExitProcess,eax

WinMain proc hInst:HINSTANCE,hPrevInst:HINSTANCE,CmdLine:LPSTR,CmdShow:DWORD
	LOCAL wc:WNDCLASSEX
	LOCAL msg:MSG
	LOCAL hwnd:HWND
	mov wc.cbSize,SIZEOF WNDCLASSEX
	mov wc.style, CS_HREDRAW or CS_VREDRAW
	mov wc.lpfnWndProc, OFFSET WndProc
	mov wc.cbClsExtra,NULL
	mov wc.cbWndExtra,NULL
	mov eax,  hInstance
	mov wc.hInstance, eax
	mov wc.hbrBackground,COLOR_WINDOW+1
	mov wc.lpszMenuName,NULL
	mov wc.lpszClassName,OFFSET ClassName
	invoke LoadIcon,NULL,IDI_APPLICATION
	mov wc.hIcon,eax
	mov wc.hIconSm,eax
;	invoke LoadCursor,NULL,IDC_ARROW
	mov wc.hCursor, NULL ; You don't set a cursor here if you intend to change it later
	invoke RegisterClassEx, addr wc
	INVOKE CreateWindowEx,NULL,ADDR ClassName,addr AppName,\
                          WS_BORDER	or WS_POPUP,CW_USEDEFAULT,\
                          CW_USEDEFAULT,300,200,NULL,NULL,\
                          hInst,NULL

	mov hwnd,eax
	invoke ShowWindow, hwnd,SW_SHOWNORMAL
	invoke UpdateWindow, hwnd
	.WHILE TRUE
		invoke GetMessage, ADDR msg,NULL,0,0
		.BREAK .IF (!eax)
		invoke TranslateMessage, ADDR msg
		invoke DispatchMessage, ADDR msg
	.ENDW
	mov     eax,msg.wParam
	ret
WinMain endp

WndProc Proc uses edi esi ebx hWnd:HWND, uMsg:UINT, wParam:WPARAM, lParam:LPARAM
LOCAL hDc:DWORD, ps:PAINTSTRUCT

	mov eax, hWnd
	mov hWindow, eax

	.IF uMsg==WM_DESTROY

		.if hBuffer
			invoke GlobalUnlock,pBuffer
			invoke GlobalFree,hBuffer
		.endif

		invoke PostQuitMessage,NULL
		mov	eax, lParam

	.ELSEIF uMsg == WM_CREATE
		and hBuffer, 0
		
	.ELSEIF uMsg == WM_LBUTTONDOWN

		mov eax, lParam
		mov edx, eax
		and eax, 0FFFFh
		and edx, 0FFFF0000h
		shr edx, 16

		.If eax < WND.Border.Left
			.If edx < WND.Border.Top
				invoke	PostMessageA,hWnd,WM_NCLBUTTONDOWN,HTTOPLEFT,0
			.ElseIf edx > WND.Border.BottomMod
				invoke	PostMessageA,hWnd,WM_NCLBUTTONDOWN,HTBOTTOMLEFT,0
			.Else
				invoke	PostMessageA,hWnd,WM_NCLBUTTONDOWN,HTLEFT,0
			.EndIf
		.ElseIf eax > WND.Border.RightMod
			.If edx < WND.Border.Top
				invoke	PostMessageA,hWnd,WM_NCLBUTTONDOWN,HTTOPRIGHT,0
			.ElseIf edx > WND.Border.BottomMod
				invoke	PostMessageA,hWnd,WM_NCLBUTTONDOWN,HTBOTTOMRIGHT,0
			.Else
				invoke	PostMessageA,hWnd,WM_NCLBUTTONDOWN,HTRIGHT,0
			.EndIf
		.ElseIf edx < WND.Border.Top
			invoke	PostMessageA,hWnd,WM_NCLBUTTONDOWN,HTTOP,0
		.ElseIf edx > WND.Border.BottomMod
			invoke	PostMessageA,hWnd,WM_NC
Posted on 2001-05-26 19:52:00 by Zadkiel