注册 登录
编程论坛 汇编论坛

关于[RadASM汇编] 显示垂直滚动条的问题

haha11 发布于 2012-04-14 20:41, 740 次点击
WinMain proto :DWORD,:DWORD,:DWORD,:DWORD


.data
   ClassName db "MainWinClass",0
   AppName  db  "我是谁,哈哈哈",0
   stidClass db  "fghfghfg",0
.data?
   hInstance HINSTANCE ?
   CommandLine LPSTR ?
   whwnd       HWND  ?
.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
    push  hInstance
    pop   wc.hInstance
    mov   wc.hbrBackground,COLOR_BTNFACE+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,eax
   
    invoke RegisterClassEx, addr wc
    INVOKE CreateWindowEx,NULL,ADDR ClassName,ADDR AppName,\
           WS_OVERLAPPEDWINDOW,CW_USEDEFAULT,\
           CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,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 hWnd:HWND, uMsg:UINT, wParam:WPARAM, lParam:LPARAM
   
    .IF uMsg==WM_DESTROY
        invoke PostQuitMessage,NULL
    .ELSEIF uMsg==WM_CREATE
        INVOKE CreateWindowEx,WS_EX_STATICEDGE,offset stidClass,NULL,\
        ES_AUTOHSCROLL,0,0,300,300,hWnd,NULL,hInstance,NULL// 我怀疑是这里的窗口类型不对,但是找不到根据,请大侠帮忙啦

        mov whwnd,eax
    .ELSE
        invoke DefWindowProc,hWnd,uMsg,wParam,lParam        
        ret
    .ENDIF
   
    xor eax,eax
    ret
WndProc endp

end start


[ 本帖最后由 haha11 于 2012-4-14 21:53 编辑 ]
10 回复
#2
haha112012-04-15 09:59
怎么没有人帮忙看看啊。。。
#3
haha112012-04-15 09:59
   o(︶︿︶)o 唉
#4
zklhp2012-04-15 10:56
1 我其实没看懂你要干什么。。

2 如果你想实现带滚动条 很简单

    INVOKE CreateWindowEx,NULL,ADDR ClassName,ADDR AppName,\
           WS_OVERLAPPEDWINDOW or WS_HSCROLL or WS_VSCROLL,CW_USEDEFAULT,\
           CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,NULL,NULL,\
           hInst,NULL

改成这样就好 关于这里我改的值的含义 http://msdn. 这里有

3 RadAsm只是个IDE 严格来讲你这里说错了 编译器怎么能是一种语言呢 我觉得叫win32宏汇编比较正确

4 我感觉你对这些函数具体是干什么的还不清楚 推荐看罗云彬的书或者看windows核心编程 只有对这些函数有认识才能写对 否则连个demo都写不了

5 效果图 如果你想实现的东西不好描述建议也贴图

只有本站会员才能查看附件,请 登录



[ 本帖最后由 zklhp 于 2012-4-15 10:57 编辑 ]
#5
zklhp2012-04-15 10:59
6 从设计的角度讲 窗口加滚动条是一种非常不友好的设计 你看看系统里面 能不加滚动条的地方都没见 比如那些设置
#6
于祥2012-04-15 21:13
没怎么看懂!
#7
haha112012-04-16 00:25
呵呵,谢谢啦
#8
haha112012-04-16 00:29
其实我都看完了windows程序程序前12章了,现在很乱,有些问题还了解不够深入了,希望能多多帮忙哦
#9
zklhp2012-04-16 11:52
以下是引用haha11在2012-4-16 00:29:48的发言:

其实我都看完了windows程序程序前12章了,现在很乱,有些问题还了解不够深入了,希望能多多帮忙哦

那应该适当看看windows核心编程
#10
haha112012-04-16 15:08
我正在看呢。。。有什么好的网络编程书,介绍一下
#11
zklhp2012-04-16 15:15
叫什么windows网络编程的 有中文版 但我也没看过。。

先明确需求再找书是比较好的。。
1