标题:置顶小程序。看网页电影时自己用~ 源码~
只看楼主
onepc
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:3
帖 子:223
专家分:569
注 册:2009-8-27
结帖率:54.55%
 问题点数:0 回复次数:1 
置顶小程序。看网页电影时自己用~ 源码~
程序代码:
;功能:按f10置顶 f11隐藏界面
;by onepc 153785587 
.386
.model flat,stdcall
option casemap:none

include windows.inc
include user32.inc
includelib user32.lib
include kernel32.inc
includelib kernel32.lib

;include macro.asm ;这个是CTXT("") 宏

IDR_MAINFRAME        equ            128
IDD_TOP_DIALOG        equ           102
IDC_ETIME         equ         100

ID_F10        equ 10
ID_F11        equ 11

.data


.data?
hInstance dd ?
hMain dd ?
hTop dd ?
dwCheck dd ?
dwYesNo dd ?

stMsg MSG <>

.code






DlgProc proc uses esi edi ebx hDlg,uMsg,wParam,lParam
.if uMsg==WM_INITDIALOG
    push hDlg
    pop hMain
    ;;;;;;;;;;;;;;;;;;;;;
    invoke    LoadIcon,hInstance,IDR_MAINFRAME
     invoke    SendMessage,hDlg,WM_SETICON,ICON_BIG,eax
    ;;;;;;;;;;;;;;;;;;;;
    invoke RegisterHotKey,hDlg,ID_F10,NULL,VK_F10 ;注册热键
    invoke RegisterHotKey,hDlg,ID_F11,NULL,VK_F11
    
    ;变非模态
    ;invoke    GetWindowLong,hDlg,GWL_STYLE
     ;or    eax,WS_THICKFRAME
     ;invoke    SetWindowLong,hDlg,GWL_STYLE,eax
     ;invoke ShowWindow,hDlg,SW_HIDE

    
    
    
.elseif uMsg==WM_COMMAND
    mov eax,wParam
    .if ax==IDOK
        ;invoke EndDialog,hDlg,TRUE
    .endif
    
 .elseif uMsg==WM_HOTKEY ;热键消息
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
        .if wParam==ID_F10   ;置顶窗口
            
            invoke GetForegroundWindow
            mov hTop,eax
            invoke GetWindowLong,hTop,GWL_EXSTYLE
            mov dwCheck,eax   ;getwindowlong返回的窗口风格 传给 dwcheck
            mov dwYesNo,eax
            or dwCheck,WS_EX_TOPMOST ;若是本身是置顶的则or了之后是相等的,若是不是置顶的则不相等,即or了之后会大
            mov eax,dwCheck    
            .if eax>dwYesNo
                invoke    SetWindowPos,hTop,HWND_TOPMOST,0,0,0,0,\
                    SWP_NOMOVE or SWP_NOSIZE
            .else
                invoke    SetWindowPos,hTop,HWND_NOTOPMOST,0,0,0,0,\
                    SWP_NOMOVE or SWP_NOSIZE
            .endif
        
            
       .endif
       .if wParam==ID_F11
           invoke IsWindowVisible,hDlg
           .if eax
           invoke ShowWindow,hDlg,SW_HIDE
           .else
               invoke ShowWindow,hDlg,SW_NORMAL
           .endif
       .endif    
       
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;    
    
.elseif uMsg==WM_CLOSE
   invoke UnregisterHotKey,hDlg,ID_F10 ;注消热键
   invoke UnregisterHotKey,hDlg,ID_F11
   ;invoke MessageBox,NULL,CTXT("a"),CTXT("a"),0
    ;invoke EndDialog,hDlg,FALSE ;模态
    invoke DestroyWindow,hDlg ;非模态
    invoke PostQuitMessage,NULL;非模态
.else
    mov eax,FALSE
    ret
.endif
mov eax,TRUE
ret
DlgProc endp



start:
invoke GetModuleHandle,NULL
mov hInstance,eax

;invoke DialogBoxParam,hInstance,IDD_TOP_DIALOG,NULL,addr DlgProc,NULL ;模态
invoke CreateDialogParam,hInstance,IDD_TOP_DIALOG,NULL,addr DlgProc,NULL ;非模态

;;;;消息循环
         .while TRUE
         invoke GetMessage,addr stMsg,NULL,0,0
         .break .if eax==0
         invoke TranslateMessage,addr stMsg
         invoke DispatchMessage,addr stMsg
         .endw


invoke ExitProcess,NULL

end start
收到的鲜花
  • zklhp2009-09-26 10:52 送鲜花  49朵   附言:我很赞同
搜索更多相关主题的帖子: 源码 电影 网页 置顶 
2009-09-26 08:38
阿贝
Rank: 2
等 级:论坛游民
威 望:1
帖 子:104
专家分:66
注 册:2009-10-22
得分:0 
看不懂 啊    楼主多加点说明 行不
2009-10-23 23:16



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-286969-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.019528 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved