MSDN 怎么和VC6.0绑定,就是按F1可以直接调出函数说明

MSDN 怎么和VC6.0绑定,就是按F1可以直接调出函数说明,安了MSDN可以单独打开,但是按F1不能直接调出来

2个回答

你是怎么安装的msdn,以及安装的是什么版本的msdn,只有msdn 2001以前的版本才支持和vc的绑定,并且两者都要是原版的,先安装vc++。

http://download.csdn.net/album/detail/639
这里有我亲自上传的完整版vc++和msdn

VC6里的MSDN是独立出来的吧
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
vc++6.0在安装MSDN的时候出现无法安装的问题
我已经安装好了vc++6.0,离线的MSDN1.4G的iso也已经下好了,但是在用虚拟光驱软件装的时候运行setup.exe会弹出setup.exe不是win32程序的错误,难道这个MSDN还不能在32位WIN7上面使用吗?如果可以的话应该怎么安装呢?希望大家帮忙看看。应该怎么解决。
求教vc6.0下关于ODBC API 中SQLGetStmtAttr函数的应用
查了很多资料包括MSDN中关于SQLGetStmtAttr函数的应用,但是由于MSDN是英文版的,看的有点模糊,请教各位大哥来个中文的解释,包括该函数的参数的说明,以及用途。以下代码: DWORD CODBCRecordSet::GetRowNumber() { DWORD dwRowNumber; m_retcode = ::SQLGetStmtAttr ( m_hstmt, SQL_ATTR_ROW_NUMBER, &dwRowNumber,0,0 ); if( m_retcode != SQL_SUCCESS ) { m_pODBCDatabase->DisplayODBCError( m_hstmt ); return 0; } return dwRowNumber; } 我调试了下,发现到return dwRowNumber这一行后,dwRowNumber变为了零。我本意是想获取access数据中的表记录数。
msdn 6.0中windows api是写在那个文件里的?
msdn 6.0中windows api是写在那个文件里的?
VC6.0使用ON_REGISTERED_MESSAGE添加新消息时出错
添加一个新消息: const UINT wm_Find = RegisterWindowMessage(FINDMSGSTRING); 然后添加函数定义和宏映射 afx_msg long OnFind(WPARAM wParam,LPARAM lParam); ON_REGISTERED_MESSAGE(wm_Find, OnFind) 编译时出现下面的错误: error C2440: 'type cast' : cannot convert from 'long (__cdecl *)(unsigned int,long)' to 'long (__thiscall CWnd::*)(unsigned int,long)' 请问是怎么回事,这段代码我是根据MSDN改编过来的
关于windows.h的函数声明,我看不懂?
最近我学习windows.h头文件制作管理系统的界面,但是有关函数的声明我看不懂 比如 百度百科里的,这个看得懂,返回值类型为句柄,参数类型为DWORD ``` HANDLE GetStdHandle( DWORD nStdHandle ); ``` 但msdn里的为 ``` HANDLE WINAPI GetStdHandle(_In_ DWORD nStdHandle); ``` # __问题__ 1.里面的WINAPI和 In的作用不清楚 2.我查了下 In是宏,查了下资料按照我的理解是表示该参数是用于输入值用于函数执行,而Out的参数是用于接收函数执行完后的数据。不知道这样子理解对不对? 3.上述第二种声明在我学到的C语言内不是正规的函数声明,为什么会这样?
为什么我的VS2019离线MSDN文档下载很慢?
我笔记本插的网线,速度我认为是比较快的,但是文档下载速度太慢了,一上午也没下载几个包……网速606.34Mbps 有没有大神帮忙看看是哪里的问题,谢谢了!![图片说明](https://img-ask.csdn.net/upload/202002/14/1581648081_107989.png)
请问getegid这个函数在vc中的哪个头文件中
请问vc中有这个函数吗,有的话是在哪个头文件中呢,没有的话是用什么代替呢?我在msdn上搜过,那上面显示头文件是<sys/syscall.h>,但是我试了一下显示没有这个头文件的错误信息。
MFC CTabCtrl 嵌套问题
我用 的 VC6.0 开始 父窗口用的是 FromView 里面放个 CtabCtrl 再 嵌套一个后 第二个 CtabCtrl 的属性页 就点不了了,之后 看MSDN 上面说 父窗口 一般为 CDialog 我就用CDialog 做父窗口 嵌套后 第二个CTabCtrl 显示 的 页面 不能 点选 ,Edit Button 都不可以 望做过的大神解答
Asp.net整合Office Web Apps,Word无法编辑的问题
Excel PowerPoint 都可以预览并编辑,但是Word无法编辑,这个问题怎么解决呀。 样例地址:https://code.msdn.microsoft.com/office/Building-an-Office-Web-f98650d6
关于msdn上面的IsWindows10OrGreater和8.1那个在window10上运行会出错
For Windows 10, IsWindows10OrGreater returns false unless the application contains a manifest that includes a compatibility section that contains the GUID that designates Windows 10. 这个具体怎么解决啊。
tkinter界面最小化到托盘如何保持按钮启动的程序后台一直运行。
我使用网上的代码,把用户界面最小化后按钮启动的程序停止运行了,请问有大神指点一下吗? ``` import win32api import win32con import win32gui_struct import win32gui from multiprocessing import Process import GetData import SaveAwx from Parameter import * import numpy as np from tkinter import * import threading Main = None class SysTrayIcon(object): QUIT = 'QUIT' SPECIAL_ACTIONS = [QUIT] FIRST_ID = 1314 def __init__(s, icon, hover_text, on_quit=None, default_menu_index=None, window_class_name=None, ): s.icon = icon s.hover_text = hover_text s.on_quit = on_quit menu_options = (('退出', None, s.QUIT),) s._next_action_id = s.FIRST_ID s.menu_actions_by_id = set() s.menu_options = s._add_ids_to_menu_options(list(menu_options)) s.menu_actions_by_id = dict(s.menu_actions_by_id) del s._next_action_id s.default_menu_index = (default_menu_index or 0) s.window_class_name = window_class_name or "SysTrayIconPy" message_map = {win32gui.RegisterWindowMessage("TaskbarCreated"): s.refresh_icon, win32con.WM_DESTROY: s.destroy, win32con.WM_COMMAND: s.command, win32con.WM_USER + 20: s.notify, } # 注册窗口类。 window_class = win32gui.WNDCLASS() window_class.hInstance = win32gui.GetModuleHandle(None) window_class.lpszClassName = s.window_class_name window_class.style = win32con.CS_VREDRAW | win32con.CS_HREDRAW; window_class.hCursor = win32gui.LoadCursor(0, win32con.IDC_ARROW) window_class.hbrBackground = win32con.COLOR_WINDOW window_class.lpfnWndProc = message_map # 也可以指定wndproc. s.classAtom = win32gui.RegisterClass(window_class) def show_icon(s): # 创建窗口。 hinst = win32gui.GetModuleHandle(None) style = win32con.WS_OVERLAPPED | win32con.WS_SYSMENU s.hwnd = win32gui.CreateWindow(s.classAtom, s.window_class_name, style, 0, 0, win32con.CW_USEDEFAULT, win32con.CW_USEDEFAULT, 0, 0, hinst, None) win32gui.UpdateWindow(s.hwnd) s.notify_id = None s.refresh_icon() win32gui.PumpMessages() def show_menu(s): menu = win32gui.CreatePopupMenu() s.create_menu(menu, s.menu_options) # win32gui.SetMenuDefaultItem(menu, 1000, 0) pos = win32gui.GetCursorPos() # See http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/menus_0hdi.asp win32gui.SetForegroundWindow(s.hwnd) win32gui.TrackPopupMenu(menu, win32con.TPM_LEFTALIGN, pos[0], pos[1], 0, s.hwnd, None) win32gui.PostMessage(s.hwnd, win32con.WM_NULL, 0, 0) def destroy(s, hwnd, msg, wparam, lparam): if s.on_quit: s.on_quit(s) # 运行传递的on_quit nid = (s.hwnd, 0) win32gui.Shell_NotifyIcon(win32gui.NIM_DELETE, nid) win32gui.PostQuitMessage(0) # 退出托盘图标 def notify(s, hwnd, msg, wparam, lparam): if lparam == win32con.WM_LBUTTONDBLCLK: # 双击左键 pass # s.execute_menu_option(s.default_menu_index + s.FIRST_ID) elif lparam == win32con.WM_RBUTTONUP: # 单击右键 s.show_menu() elif lparam == win32con.WM_LBUTTONUP: # 单击左键 nid = (s.hwnd, 0) win32gui.Shell_NotifyIcon(win32gui.NIM_DELETE, nid) win32gui.PostQuitMessage(0) # 退出托盘图标 if Main: Main.root.deiconify() return True """ 可能的鼠标事件: WM_MOUSEMOVE WM_LBUTTONDOWN WM_LBUTTONUP WM_LBUTTONDBLCLK WM_RBUTTONDOWN WM_RBUTTONUP WM_RBUTTONDBLCLK WM_MBUTTONDOWN WM_MBUTTONUP WM_MBUTTONDBLCLK""" def _add_ids_to_menu_options(s, menu_options): result = [] for menu_option in menu_options: option_text, option_icon, option_action = menu_option if callable(option_action) or option_action in s.SPECIAL_ACTIONS: s.menu_actions_by_id.add((s._next_action_id, option_action)) result.append(menu_option + (s._next_action_id,)) else: result.append((option_text, option_icon, s._add_ids_to_menu_options(option_action), s._next_action_id)) s._next_action_id += 1 return result def refresh_icon(s, **data): hinst = win32gui.GetModuleHandle(None) if os.path.isfile(s.icon): # 尝试找到自定义图标 icon_flags = win32con.LR_LOADFROMFILE | win32con.LR_DEFAULTSIZE hicon = win32gui.LoadImage(hinst, s.icon, win32con.IMAGE_ICON, 0, 0, icon_flags) else: # 找不到图标文件 - 使用默认值 hicon = win32gui.LoadIcon(0, win32con.IDI_APPLICATION) if s.notify_id: message = win32gui.NIM_MODIFY else: message = win32gui.NIM_ADD s.notify_id = (s.hwnd, 0, win32gui.NIF_ICON | win32gui.NIF_MESSAGE | win32gui.NIF_TIP, win32con.WM_USER + 20, hicon, s.hover_text) win32gui.Shell_NotifyIcon(message, s.notify_id) def create_menu(s, menu, menu_options): for option_text, option_icon, option_action, option_id in menu_options[::-1]: if option_icon: option_icon = s.prep_menu_icon(option_icon) if option_id in s.menu_actions_by_id: item, extras = win32gui_struct.PackMENUITEMINFO(text=option_text, hbmpItem=option_icon, wID=option_id) win32gui.InsertMenuItem(menu, 0, 1, item) else: submenu = win32gui.CreatePopupMenu() s.create_menu(submenu, option_action) item, extras = win32gui_struct.PackMENUITEMINFO(text=option_text, hbmpItem=option_icon, hSubMenu=submenu) win32gui.InsertMenuItem(menu, 0, 1, item) def prep_menu_icon(s, icon): # 首先加载图标。 ico_x = win32api.GetSystemMetrics(win32con.SM_CXSMICON) ico_y = win32api.GetSystemMetrics(win32con.SM_CYSMICON) hicon = win32gui.LoadImage(0, icon, win32con.IMAGE_ICON, ico_x, ico_y, win32con.LR_LOADFROMFILE) hdcBitmap = win32gui.CreateCompatibleDC(0) hdcScreen = win32gui.GetDC(0) hbm = win32gui.CreateCompatibleBitmap(hdcScreen, ico_x, ico_y) hbmOld = win32gui.SelectObject(hdcBitmap, hbm) # 填满背景。 brush = win32gui.GetSysColorBrush(win32con.COLOR_MENU) win32gui.FillRect(hdcBitmap, (0, 0, 16, 16), brush) # "GetSysColorBrush返回缓存的画笔而不是分配新的画笔。" # - 暗示没有DeleteObject # 画出图标 win32gui.DrawIconEx(hdcBitmap, 0, 0, hicon, ico_x, ico_y, 0, 0, win32con.DI_NORMAL) win32gui.SelectObject(hdcBitmap, hbmOld) win32gui.DeleteDC(hdcBitmap) return hbm def command(s, hwnd, msg, wparam, lparam): id = win32gui.LOWORD(wparam) s.execute_menu_option(id) def execute_menu_option(s, id): menu_action = s.menu_actions_by_id[id] if menu_action == s.QUIT: win32gui.DestroyWindow(s.hwnd) else: menu_action(s) class _Main: def main(s): import tkinter as tk s.root = tk.Tk() s.S = Scrollbar(s.root) s.T = Text(s.root, height=4, width=50) s.S.pack(side=RIGHT, fill=Y) s.T.pack(side=LEFT, fill=Y) s.S.config(command=s.T.yview) s.T.config(yscrollcommand=s.S.set) quote = "Start reading files\n" s.T.insert(END, quote) s.T.update() s.goBtn = Button(text="Go!", command=s.tt) s.goBtn.pack() icons = 'D:\\1.ico' hover_text = "SysTrayIcon.py Demo" # 悬浮于图标上方时的提示 s.sysTrayIcon = SysTrayIcon(icons, hover_text, on_quit=s.exit, default_menu_index=1) s.root.bind("<Unmap>", lambda event: s.Unmap() if s.root.state() == 'iconic' else False) s.root.protocol('WM_DELETE_WINDOW', s.exit) s.root.resizable(0, 0) s.root.mainloop() def switch_icon(s, _sysTrayIcon, icons='D:\\2.ico'): _sysTrayIcon.icon = icons _sysTrayIcon.refresh_icon() # 点击右键菜单项目会传递SysTrayIcon自身给引用的函数,所以这里的_sysTrayIcon = s.sysTrayIcon def Unmap(s): s.root.withdraw() s.sysTrayIcon.show_icon() def exit(s, _sysTrayIcon=None): s.root.destroy() print('exit...') def tt(s): while True: print("**********************") quote = "Start reading files\n" s.T.insert(END, quote) s.T.update() ``` ``` ``` ``` ```
高版本 .net framework开发的程序,运行在低版本 .net framework系统上会不会有问题?
![图片说明](https://img-ask.csdn.net/upload/201908/20/1566270625_629778.png) ![图片说明](https://img-ask.csdn.net/upload/201908/20/1566271277_264933.png) 用4.8版本开发的,在4.8以下版本的电脑上运行, ![图片说明](https://img-ask.csdn.net/upload/201908/20/1566270870_679522.png) 按照MSDN的说法应该会弹出要安装新版本的信息, 但实际测试下来并没有。为什么?会不会有什么隐患?
await Task.Delay(1000)和Task.Delay(1000).Wait()
经测试对比,两种延时策略有以下区别: 若采用await Task.Delay(1000);的延时策略,Task.Status第一遍循环中为Running,以后的循环中全部为RanToCompletion,退出循环后仍然为RanToCompletion; 若采用Task.Delay(1000).Wait();的策略,循环中Task.Status一直为Running,退出循环即为RanToCompletion。 请问:为什么是这样?从测试结果看采用Task.Delay(1000).Wait()似乎更合理,但大家在实际应用中似乎更多使用await Task.Delay(1000),包括MSDN上的例子。 ``` CancellationTokenSource cts = new CancellationTokenSource(); Task taskT; private void button1_Click(object sender, EventArgs e) { taskT = Task.Factory.StartNew(() => t(cts.Token), cts.Token); } private async Task t(CancellationToken token) { Console.WriteLine("taskT.Status2:{0}", taskT.Status); while (true) { Console.WriteLine(); if (token.IsCancellationRequested) { Console.WriteLine("线程被终止!"); break; } Console.WriteLine(DateTime.Now.ToString()); Console.WriteLine("taskT.Status3:{0}", taskT.Status); //await Task.Delay(3000); Task.Delay(3000).Wait(); //taskT.Wait(3000); Console.WriteLine("taskT.Status4:{0}", taskT.Status); } Console.WriteLine("taskT.Status5:{0}", taskT.Status); } ```
C++ Win32API 如何使用 FindText函数?
我想了解一下 Win32API C++ 的 FindText(LPFINDREPLACE lpfr) (commdlg.h)函数的用法 需要完整的处理过程,不要再msdn上fu'zhi
excel2016 64bit的vba中使用API函数RegisterClass注册窗体类就Excel就崩溃
excel2016 64bit的vba中使用API函数RegisterClass注册窗体类就Excel就崩溃!请问是怎么回事? ``` Option Explicit Public Declare PtrSafe Function RegisterClass Lib "user32" Alias "RegisterClassA" (Class As WNDCLASS) As Long Public Declare PtrSafe Function UnregisterClass Lib "user32" Alias "UnregisterClassA" (ByVal lpClassName As String, ByVal hInstance As Long) As Long Public Declare PtrSafe Function DefWindowProc Lib "user32" Alias "DefWindowProcA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long Public Declare PtrSafe Function GetMessage Lib "user32" Alias "GetMessageA" (lpMsg As Msg, ByVal hwnd As Long, ByVal wMsgFilteRmin As Long, ByVal wMsgFilterMax As Long) As Long Public Declare PtrSafe Function TranslateMessage Lib "user32" (lpMsg As Msg) As Long Public Declare PtrSafe Function DispatchMessage Lib "user32" Alias "DispatchMessageA" (lpMsg As Msg) As Long Public Declare PtrSafe Function ShowWindow Lib "user32" (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long Public Declare PtrSafe Function LoadCursor Lib "user32" Alias "LoadCursorA" (ByVal hInstance As Long, ByVal lpCursorName As Any) As Long Public Declare PtrSafe Function LoadIcon Lib "user32" Alias "LoadIconA" (ByVal hInstance As Long, ByVal lpIconName As String) As Long Public Declare PtrSafe Function CreateWindowEx Lib "user32" Alias "CreateWindowExA" (ByVal dwExStyle As Long, ByVal lpClassName As String, ByVal lpWindowName As String, ByVal dwStyle As Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hWndParent As Long, ByVal hMenu As Long, ByVal hInstance As Long, lpParam As Any) As Long Public Declare PtrSafe Function CallWindowProc Lib "user32" Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, ByVal hwnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long Public Declare PtrSafe Function SetWindowLongPtr Lib "user32" Alias "SetWindowLongPtrA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long Public Declare PtrSafe Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long Public Declare PtrSafe Function MessageBox Lib "user32" Alias "MessageBoxA" (ByVal hwnd As Long, ByVal lpText As String, ByVal lpCaption As String, ByVal wType As Long) As Long Public Declare PtrSafe Function PostQuitMessage Lib "user32" (ByVal nExitCode As Long) Public Declare PtrSafe Function GetOpenFileName Lib "comdlg32.dll" Alias "GetOpenFileNameA" (pOPENFILENAME As OPENFILENAME) As Long Public Declare PtrSafe Function GetSaveFileName Lib "comdlg32.dll" Alias "GetSaveFileNameA" (pOPENFILENAME As OPENFILENAME) As Long Public Declare PtrSafe Function GetLastError Lib "kernel32" () As Long Public Type OPENFILENAME lStructSize As Long hwndOwner As Long hInstance As Long lpstrFilter As String lpstrCustomFilter As String nMaxCustFilter As Long nFilterIndex As Long lpstrFile As String nMaxFile As Long lpstrFileTitle As String nMaxFileTitle As Long lpstrInitialDir As String lpstrTitle As String flags As Long nFileOffset As Integer nFileExtension As Integer lpstrDefExt As String lCustData As Long lpfnHook As Long lpTemplateName As String End Type Public Const OFN_OVERWRITEPROMPT = &H2 Public Const OFN_HIDEREADONLY = &H4 Public Const OFN_PATHMUSTEXIST = &H800 Public Const OFN_FILEMUSTEXIST = &H1000 Public Type WNDCLASS style As Long lpfnwndproc As LongPtr cbClsextra As Long cbWndExtra2 As Long hInstance As LongPtr hIcon As Long hCursor As Long hbrBackground As Long lpszMenuName As String lpszClassName As String End Type Public Type POINTAPI x As Long y As Long End Type Public Type Msg hwnd As Long message As Long wParam As Long lParam As Long time As Long pt As POINTAPI End Type Public Const CS_VREDRAW = &H1 Public Const CS_HREDRAW = &H2 Public Const CW_USEDEFAULT = &H80000000 Public Const ES_MULTILINE = &H4& Public Const WS_BORDER = &H800000 Public Const WS_CHILD = &H40000000 Public Const WS_OVERLAPPED = &H0& Public Const WS_CAPTION = &HC00000 ' WS_BORDER Or WS_DLGFRAME Public Const WS_SYSMENU = &H80000 Public Const WS_THICKFRAME = &H40000 Public Const WS_MINIMIZEBOX = &H20000 Public Const WS_MAXIMIZEBOX = &H10000 Public Const WS_OVERLAPPEDWINDOW = (WS_OVERLAPPED Or WS_CAPTION Or WS_SYSMENU Or WS_THICKFRAME Or WS_MINIMIZEBOX Or WS_MAXIMIZEBOX) Public Const WS_EX_CLIENTEDGE = &H200& Public Const COLOR_WINDOW = 5 Public Const WM_DESTROY = &H2 Public Const WM_LBUTTONDOWN = &H201 Public Const WM_LBUTTONUP = &H202 Public Const IDC_ARROW = 32512& Public Const IDI_APPLICATION = 32512& Public Const GWL_WNDPROC = (-4) Public Const SW_SHOWNORMAL = 1 Public Const MB_OK = &H0& Public Const MB_ICONEXCLAMATION = &H30& Public Const gClassName = "MyClassName" Public Const gAppName = "My Window Caption" Public gButOldProc As Long Public gHwnd As Long, gButtonHwnd As Long, gEditHwnd As Long Public Sub Main() Dim wMsg As Msg ''Call procedure to register window classname. If false, then exit. If RegisterWindowClass = False Then Exit Sub ''Create window If CreateWindows Then ''Loop will exit when WM_QUIT is sent to the window. Do While GetMessage(wMsg, 0&, 0&, 0&) ''TranslateMessage takes keyboard messages and converts ''them to WM_CHAR for easier processing. Call TranslateMessage(wMsg) ''Dispatchmessage calls the default window procedure ''to process the window message. (WndProc) Call DispatchMessage(wMsg) Loop End If Call UnregisterClass(gClassName$, Application.hInstance) End Sub Public Function RegisterWindowClass() As Boolean Dim wc As WNDCLASS Dim a As Variant wc.style = CS_HREDRAW Or CS_VREDRAW wc.lpfnwndproc = GetAddress(AddressOf WndProc) ''Address in memory of default window procedure. wc.hInstance = Application.HinstancePtr wc.hIcon = LoadIcon(0&, IDI_APPLICATION) ''Default application icon wc.hCursor = LoadCursor(0&, IDC_ARROW) ''Default arrow wc.hbrBackground = COLOR_WINDOW ''Default a color for window. wc.lpszClassName = gClassName$ RegisterWindowClass = RegisterClass(wc) a = GetLastError Debug.Print RegisterWindowClass & "ERR" Debug.Print CStr(GetLastError()) End Function Public Function CreateWindows() As Boolean ''开始创建窗体 gHwnd& = CreateWindowEx(0&, gClassName$, gAppName$, WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, 208, 150, 0&, 0&, App.hInstance, ByVal 0&) ''创建一个按钮 gButtonHwnd& = CreateWindowEx(0&, "Button", "Click Here", WS_CHILD, 58, 90, 85, 25, gHwnd&, 0&, App.hInstance, 0&) ''创建一个(WS_EX_CLIENTEDGE、ES_MULTILINE风格的TextBox gEditHwnd& = CreateWindowEx(WS_EX_CLIENTEDGE, "Edit", "This is the edit control." & vbCrLf & "As you can see, it's multiline.", WS_CHILD Or ES_MULTILINE, 0&, 0&, 200, 80, gHwnd&, 0&, App.hInstance, 0&) Call ShowWindow(gHwnd&, SW_SHOWNORMAL) Call ShowWindow(gButtonHwnd&, SW_SHOWNORMAL) Call ShowWindow(gEditHwnd&, SW_SHOWNORMAL) gButOldProc& = GetWindowLong(gButtonHwnd&, GWL_WNDPROC) ''Set default window procedure of button to ButtonWndProc. Different ''settings of windows is listed in the MSDN Library. We are using GWL_WNDPROC ''to set the address of the window procedure. Call SetWindowLongPtr(gButtonHwnd&, GWL_WNDPROC, GetAddress(AddressOf ButtonWndProc)) CreateWindows = (gHwnd& <> 0) End Function '窗体运行的主函数,在注册这个窗体时已经指定的 Public Function WndProc(ByVal hwnd As Long, ByVal uMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long Dim strTemp As String Select Case uMsg& Case WM_DESTROY: ''Since DefWindowProc doesn't automatically call ''PostQuitMessage (WM_QUIT). We need to do it ourselves. ''You can use DestroyWindow to get rid of the window manually. Call PostQuitMessage(0&) End Select ''Let windows call the default window procedure since we're done. WndProc = DefWindowProc(hwnd&, uMsg&, wParam&, lParam&) End Function Public Function ButtonWndProc(ByVal hwnd As Long, ByVal uMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long Select Case uMsg& Case WM_LBUTTONUP: Call MessageBox(gHwnd&, "You clicked the button!", App.Title, MB_OK Or MB_ICONEXCLAMATION) End Select ButtonWndProc = CallWindowProc(gButOldProc&, hwnd&, uMsg&, wParam&, lParam&) End Function Public Function GetAddress(ByVal lngAddr As LongPtr) As LongPtr GetAddress = lngAddr End Function ```
求助:透明GIF加水印后无法保持透明
各位大神好,再下做一个项目,需要加水印的功能,可发现当GIF为透明时,加水印不能保持透明。 以下是源码片段: //GIF合成 System.Drawing.Imaging.FrameDimension frameDimension = new System.Drawing.Imaging.FrameDimension(origialGif.FrameDimensionsList[0]); int frameCount = origialGif.GetFrameCount(frameDimension); for (int i = 0; i < frameCount; i++) { if (origialGif.SelectActiveFrame(frameDimension, i) == 0) { int delay = Convert.ToInt32(origialGif.GetPropertyItem(20736).Value.GetValue(i)); Image img = AddWaterPic(Image.FromHbitmap(origialGif.GetHbitmap()), waterPicturePath, alpha); Frame frame = new Frame(img, delay); frames.Add(frame); } } origialGif.Dispose(); Gif.Components.AnimatedGifEncoder gif = new Gif.Components.AnimatedGifEncoder(); gif.SetTransparent(Color.FromArgb(211, 211, 211)); gif.Start(filePath); gif.SetRepeat(0); for (int i = 0; i < frames.Count; i++) { gif.SetDelay(frames[i].Delay); gif.AddFrame(frames[i].Image); } gif.Finish(); //加水印 public static Image AddWaterPic(Bitmap origialGif, string waterPicturePath, float alpha) { //由于水印是图片,我们也需要定义一个Image来装载它 using (Image imgWatermark = new Bitmap(waterPicturePath)) { // 获取原图片的高度和宽度 int phWidth = origialGif.Width; int phHeight = origialGif.Height; // 获取水印图片的高度和宽度 int wmWidth = imgWatermark.Width; int wmHeight = imgWatermark.Height; //需要一个位图来装载水印图片。并设定其分辨率 Bitmap bmWatermark = new Bitmap(origialGif); bmWatermark.SetResolution(origialGif.HorizontalResolution, origialGif.VerticalResolution); // 继续,将水印图片装载到一个绘图画面grWatermark using (Graphics grWatermark = Graphics.FromImage(bmWatermark)) { //ImageAttributes 对象包含有关在呈现时如何操作位图和图元文件颜色的信息 ImageAttributes imageAttributes = new ImageAttributes(); #region 设置颜色 //Colormap: 定义转换颜色的映射 ColorMap colorMap = new ColorMap(); //我的水印图被定义成拥有绿色背景色的图片被替换成透明 colorMap.OldColor = Color.FromArgb(255, 0, 255, 0); colorMap.NewColor = Color.FromArgb(0, 0, 0, 0); ColorMap[] remapTable = { colorMap }; imageAttributes.SetRemapTable(remapTable, ColorAdjustType.Bitmap); float[][] colorMatrixElements = { new float[] {1.0f, 0.0f, 0.0f, 0.0f, 0.0f}, // red红色 new float[] {0.0f, 1.0f, 0.0f, 0.0f, 0.0f}, //green绿色 new float[] {0.0f, 0.0f, 1.0f, 0.0f, 0.0f}, //blue蓝色 new float[] {0.0f, 0.0f, 0.0f, alpha, 0.0f},//透明度 new float[] {0.0f, 0.0f, 0.0f, 0.0f, 1.0f}};// //ColorMatrix:定义包含 RGBA 空间坐标的 5 x 5 矩阵。 //ImageAttributes 类的若干方法通过使用颜色矩阵调整图像颜色。 ColorMatrix wmColorMatrix = new ColorMatrix(colorMatrixElements); imageAttributes.SetColorMatrix(wmColorMatrix, ColorMatrixFlag.Default, ColorAdjustType.Bitmap); #endregion //上面设置完颜色,下面开始设置位置 int xPosOfWm = 0; int yPosOfWm = phHeight - wmHeight; // 第二次绘图,把水印印上去 grWatermark.DrawImage(imgWatermark, new Rectangle(xPosOfWm, yPosOfWm, wmWidth, wmHeight), 0, 0, wmWidth, wmHeight, GraphicsUnit.Pixel, imageAttributes); return bmWatermark; } } } 我在加完水印后,把每帧的图像保持下来,是透明的.但是当把这些透明的图片再次合成时,透明就会变成黑色. 在合成的循环前,循环中使用AnimatedGifEncoder.SetTransparent(Color.Black),部分帧可以变透明。(我把未能变透明的图片在PS进行采样,发现黑色是一样的黑色,但就是没有变透明)。 然后我又查了一些资料,在MSDN上写着“ Image 类不支持位图中的 Alpha 透明。 若要启用 Alpha 透明,请使用每像素 32 位的 PNG 图像。 ” 之前搜到一些转透明的文章,如“http://blog.itpub.net/12639172/viewspace-503870/”,里面提供了一些API,ToImageGif等等,可是转换都不行,要么变成白底,要么直接异常。 是这个原因吗?我用的合成是AnimatedGifEncoder类,网上也没有找到这些相关方面的资料,求大神赐教。 都是透明的图片合成以后不能透明,并且背景变成了黑色。 我全部的分数也只有21.求大神赐教了。
msdn帮助文档,“接口可以实现接口”问题。
msdn里有段话,接口可以实现接口,不明白,接口的方法不都是在,实体类中实现的吗。 ![图片说明](https://img-ask.csdn.net/upload/201504/25/1429928027_583390.jpg)
[Visual.C.通用范例开发金典].这书的1-10的例子问题
主要是通过单选按钮改变了编辑框的文字颜色,但我搞不懂怎么SetFocus()这个能改变呢?我msdn中找了几个看了看,和改变颜色没关系啊。有前辈解释一下吧,谢谢了 void CLx1Dlg::OnRadio4() { // TODO: Add your control notification handler code here color=RGB(255,0,0); // UpdateData(TRUE); // GetDlgItem(IDC_STATIC1)->SetFocus(); //m_bbtn.SetFocus(); //m_eedd.SetFocus();尝试了很多其他按钮静态文字都不改变颜色 m_edit.SetFocus(); } void CLx1Dlg::OnRadio5() { // TODO: Add your control notification handler code here color=RGB(0,255,0); m_edit.SetFocus(); }
关于System.Threading.Timer
MSDN上的例子: ``` using System; using System.Threading; public class Example { private static Timer ticker; public static void TimerMethod(object state) { Console.Write("."); } public static void Main() { ticker = new Timer(TimerMethod, null, 1000, 1000); Console.WriteLine("Press the Enter key to end the program."); Console.ReadLine(); } } ``` 问题:Timer的第2个参数为什么是null?MSDN上有解释说“对于任何托管对象,如果没有对 Timer 的引用, Timer 会被垃圾回收,即使 Timer 仍处在活动状态。”这个null是否和后面的解释矛盾?
《奇巧淫技》系列-python!!每天早上八点自动发送天气预报邮件到QQ邮箱
将代码部署服务器,每日早上定时获取到天气数据,并发送到邮箱。 也可以说是一个小人工智障。 思路可以运用在不同地方,主要介绍的是思路。
Linux(服务器编程):15---两种高效的事件处理模式(reactor模式、proactor模式)
前言 同步I/O模型通常用于实现Reactor模式 异步I/O模型则用于实现Proactor模式 最后我们会使用同步I/O方式模拟出Proactor模式 一、Reactor模式 Reactor模式特点 它要求主线程(I/O处理单元)只负责监听文件描述符上是否有事件发生,有的话就立即将时间通知工作线程(逻辑单元)。除此之外,主线程不做任何其他实质性的工作 读写数据,接受新的连接,以及处...
为什么要学数据结构?
一、前言 在可视化化程序设计的今天,借助于集成开发环境可以很快地生成程序,程序设计不再是计算机专业人员的专利。很多人认为,只要掌握几种开发工具就可以成为编程高手,其实,这是一种误解。要想成为一个专业的开发人员,至少需要以下三个条件: 1) 能够熟练地选择和设计各种数据结构和算法 2) 至少要能够熟练地掌握一门程序设计语言 3) 熟知所涉及的相关应用领域的知识 其中,后两个条件比较容易实现,而第一个...
C语言魔塔游戏
很早就很想写这个,今天终于写完了。 游戏截图: 编译环境: VS2017 游戏需要一些图片,如果有想要的或者对游戏有什么看法的可以加我的QQ 2985486630 讨论,如果暂时没有回应,可以在博客下方留言,到时候我会看到。 下面我来介绍一下游戏的主要功能和实现方式 首先是玩家的定义,使用结构体,这个名字是可以自己改变的 struct gamerole { char n
进程通信方式总结与盘点
​ 进程通信是指进程之间的信息交换。这里需要和进程同步做一下区分,进程同步控制多个进程按一定顺序执行,进程通信是一种手段,而进程同步是目标。从某方面来讲,进程通信可以解决进程同步问题。 ​ 首先回顾下我们前面博文中讲到的信号量机制,为了实现进程的互斥与同步,需要在进程间交换一定的信息,因此信号量机制也可以被归为进程通信的一种方式,但是也被称为低级进程通信,主要原因为: 效率低:一次只可操作少量的...
究竟你适不适合买Mac?
我清晰的记得,刚买的macbook pro回到家,开机后第一件事情,就是上了淘宝网,花了500元钱,找了一个上门维修电脑的师傅,上门给我装了一个windows系统。。。。。。 表砍我。。。 当时买mac的初衷,只是想要个固态硬盘的笔记本,用来运行一些复杂的扑克软件。而看了当时所有的SSD笔记本后,最终决定,还是买个好(xiong)看(da)的。 已经有好几个朋友问我mba怎么样了,所以今天尽量客观
听说了吗?阿里双11作战室竟1根网线都没有
双11不光是购物狂欢节,更是对技术的一次“大考”,对于阿里巴巴企业内部运营的基础保障技术而言,亦是如此。 回溯双11历史,这背后也经历过“小米加步枪”的阶段:作战室从随处是网线,交换机放地上的“一地狼藉”;到如今媲美5G的wifi网速,到现场却看不到一根网线;从当年使用商用AP(无线路由器),让光明顶双11当天断网一分钟,到全部使用阿里自研AP……阿里巴巴企业智能事业部工程师们提供的基础保障...
在阿里,40岁的奋斗姿势
在阿里,40岁的奋斗姿势 在阿里,什么样的年纪可以称为老呢?35岁? 在云网络,有这样一群人,他们的平均年龄接近40,却刚刚开辟职业生涯的第二战场。 他们的奋斗姿势是什么样的呢? 洛神赋 “翩若惊鸿,婉若游龙。荣曜秋菊,华茂春松。髣髴兮若轻云之蔽月,飘飖兮若流风之回雪。远而望之,皎若太阳升朝霞;迫而察之,灼若芙蕖出渌波。” 爱洛神,爱阿里云 2018年,阿里云网络产品部门启动洛神2.0升...
关于研发效能提升的思考
研发效能提升是最近比较热门的一个话题,本人根据这几年的工作心得,做了一些思考总结,由于个人深度有限,暂且抛转引入。 三要素 任何生产力的提升都离不开这三个因素:人、流程和工具,少了其中任何一个因素都无法实现。 人,即思想,也就是古人说的“道”,道不同不相为谋,是制高点,也是高层建筑的基石。 流程,即方法,也是古人说的“法”。研发效能的提升,也就是要提高投入产出比,既要增加产出,也要减...
Python爬虫爬取淘宝,京东商品信息
小编是一个理科生,不善长说一些废话。简单介绍下原理然后直接上代码。 使用的工具(Python+pycharm2019.3+selenium+xpath+chromedriver)其中要使用pycharm也可以私聊我selenium是一个框架可以通过pip下载 pip install selenium -i https://pypi.tuna.tsinghua.edu.cn/simple/ 
阿里程序员写了一个新手都写不出的低级bug,被骂惨了。
这种新手都不会范的错,居然被一个工作好几年的小伙子写出来,差点被当场开除了。
Java工作4年来应聘要16K最后没要,细节如下。。。
前奏: 今天2B哥和大家分享一位前几天面试的一位应聘者,工作4年26岁,统招本科。 以下就是他的简历和面试情况。 基本情况: 专业技能: 1、&nbsp;熟悉Sping了解SpringMVC、SpringBoot、Mybatis等框架、了解SpringCloud微服务 2、&nbsp;熟悉常用项目管理工具:SVN、GIT、MAVEN、Jenkins 3、&nbsp;熟悉Nginx、tomca
2020年,冯唐49岁:我给20、30岁IT职场年轻人的建议
点击“技术领导力”关注∆  每天早上8:30推送 作者| Mr.K   编辑| Emma 来源| 技术领导力(ID:jishulingdaoli) 前天的推文《冯唐:职场人35岁以后,方法论比经验重要》,收到了不少读者的反馈,觉得挺受启发。其实,冯唐写了不少关于职场方面的文章,都挺不错的。可惜大家只记住了“春风十里不如你”、“如何避免成为油腻腻的中年人”等不那么正经的文章。 本文整理了冯
程序员该看的几部电影
##1、骇客帝国(1999) 概念:在线/离线,递归,循环,矩阵等 剧情简介: 不久的将来,网络黑客尼奥对这个看似正常的现实世界产生了怀疑。 他结识了黑客崔妮蒂,并见到了黑客组织的首领墨菲斯。 墨菲斯告诉他,现实世界其实是由一个名叫“母体”的计算机人工智能系统控制,人们就像他们饲养的动物,没有自由和思想,而尼奥就是能够拯救人类的救世主。 可是,救赎之路从来都不会一帆风顺,到底哪里才是真实的世界?
入职阿里5年,他如何破解“技术债”?
简介: 作者 | 都铎 作为一名技术人,你常常会听到这样的话: “先快速上线” “没时间改” “再缓一缓吧” “以后再解决” “先用临时方案处理” …… 当你埋下的坑越来越多,不知道哪天哪位同学就会踩上一颗雷。特别赞同“人最大的恐惧就是未知,当技术债可说不可见的时候,才是最让人不想解决的时候。” 作为一个程序员,我们反对复制粘贴,但是我们经常会见到相似的代码,相同的二方包,甚至整个代码...
Python绘图,圣诞树,花,爱心 | Turtle篇
每周每日,分享Python实战代码,入门资料,进阶资料,基础语法,爬虫,数据分析,web网站,机器学习,深度学习等等。 公众号回复【进群】沟通交流吧,QQ扫码进群学习吧 微信群 QQ群 1.画圣诞树 import turtle screen = turtle.Screen() screen.setup(800,600) circle = turtle.Turtle()...
作为一个程序员,CPU的这些硬核知识你必须会!
CPU对每个程序员来说,是个既熟悉又陌生的东西? 如果你只知道CPU是中央处理器的话,那可能对你并没有什么用,那么作为程序员的我们,必须要搞懂的就是CPU这家伙是如何运行的,尤其要搞懂它里面的寄存器是怎么一回事,因为这将让你从底层明白程序的运行机制。 随我一起,来好好认识下CPU这货吧 把CPU掰开来看 对于CPU来说,我们首先就要搞明白它是怎么回事,也就是它的内部构造,当然,CPU那么牛的一个东
破14亿,Python分析我国存在哪些人口危机!
2020年1月17日,国家统计局发布了2019年国民经济报告,报告中指出我国人口突破14亿。 猪哥的朋友圈被14亿人口刷屏,但是很多人并没有看到我国复杂的人口问题:老龄化、男女比例失衡、生育率下降、人口红利下降等。 今天我们就来分析一下我们国家的人口数据吧! 一、背景 1.人口突破14亿 2020年1月17日,国家统计局发布了 2019年国民经济报告 ,报告中指出:年末中国大陆总人口(包括31个
在家远程办公效率低?那你一定要收好这个「在家办公」神器!
相信大家都已经收到国务院延长春节假期的消息,接下来,在家远程办公可能将会持续一段时间。 但是问题来了。远程办公不是人在电脑前就当坐班了,相反,对于沟通效率,文件协作,以及信息安全都有着极高的要求。有着非常多的挑战,比如: 1在异地互相不见面的会议上,如何提高沟通效率? 2文件之间的来往反馈如何做到及时性?如何保证信息安全? 3如何规划安排每天工作,以及如何进行成果验收? ......
作为一个程序员,内存和磁盘的这些事情,你不得不知道啊!!!
截止目前,我已经分享了如下几篇文章: 一个程序在计算机中是如何运行的?超级干货!!! 作为一个程序员,CPU的这些硬核知识你必须会! 作为一个程序员,内存的这些硬核知识你必须懂! 这些知识可以说是我们之前都不太重视的基础知识,可能大家在上大学的时候都学习过了,但是嘞,当时由于老师讲解的没那么有趣,又加上这些知识本身就比较枯燥,所以嘞,大家当初几乎等于没学。 再说啦,学习这些,也看不出来有什么用啊!
2020年的1月,我辞掉了我的第一份工作
其实,这篇文章,我应该早点写的,毕竟现在已经2月份了。不过一些其它原因,或者是我的惰性、还有一些迷茫的念头,让自己迟迟没有试着写一点东西,记录下,或者说是总结下自己前3年的工作上的经历、学习的过程。 我自己知道的,在写自己的博客方面,我的文笔很一般,非技术类的文章不想去写;另外我又是一个还比较热衷于技术的人,而平常复杂一点的东西,如果想写文章写的清楚点,是需要足够...
别低估自己的直觉,也别高估自己的智商
所有群全部吵翻天,朋友圈全部沦陷,公众号疯狂转发。这两周没怎么发原创,只发新闻,可能有人注意到了。我不是懒,是文章写了却没发,因为大家的关注力始终在这次的疫情上面,发了也没人看。当然,我...
Java坑人面试题系列: 包装类(中级难度)
Java Magazine上面有一个专门坑人的面试题系列: https://blogs.oracle.com/javamagazine/quiz-2。 这些问题的设计宗旨,主要是测试面试者对Java语言的了解程度,而不是为了用弯弯绕绕的手段把面试者搞蒙。 如果你看过往期的问题,就会发现每一个都不简单。 这些试题模拟了认证考试中的一些难题。 而 “中级(intermediate)” 和 “高级(ad
深度学习入门笔记(十八):卷积神经网络(一)
欢迎关注WX公众号:【程序员管小亮】 专栏——深度学习入门笔记 声明 1)该文章整理自网上的大牛和机器学习专家无私奉献的资料,具体引用的资料请看参考文献。 2)本文仅供学术交流,非商用。所以每一部分具体的参考资料并没有详细对应。如果某部分不小心侵犯了大家的利益,还望海涵,并联系博主删除。 3)博主才疏学浅,文中如有不当之处,请各位指出,共同进步,谢谢。 4)此属于第一版本,若有错误,还需继续修正与...
这个世界上人真的分三六九等,你信吗?
偶然间,在知乎上看到一个问题 一时间,勾起了我深深的回忆。 以前在厂里打过两次工,做过家教,干过辅导班,做过中介。零下几度的晚上,贴过广告,满脸、满手地长冻疮。 再回首那段岁月,虽然苦,但让我学会了坚持和忍耐。让我明白了,在这个世界上,无论环境多么的恶劣,只要心存希望,星星之火,亦可燎原。 下文是原回答,希望能对你能有所启发。 如果我说,这个世界上人真的分三六九等,...
节后首个工作日,企业们集体开晨会让钉钉挂了
By 超神经场景描述:昨天 2 月 3 日,是大部分城市号召远程工作的第一天,全国有接近 2 亿人在家开始远程办公,钉钉上也有超过 1000 万家企业活跃起来。关键词:十一出行 人脸...
Java基础知识点梳理
Java基础知识点梳理 摘要: 虽然已经在实际工作中经常与java打交道,但是一直没系统地对java这门语言进行梳理和总结,掌握的知识也比较零散。恰好利用这段时间重新认识下java,并对一些常见的语法和知识点做个总结与回顾,一方面为了加深印象,方便后面查阅,一方面为了学好java打下基础。 Java简介 java语言于1995年正式推出,最开始被命名为Oak语言,由James Gosling(詹姆
2020年全新Java学习路线图,含配套视频,学完即为中级Java程序员!!
新的一年来临,突如其来的疫情打破了平静的生活! 在家的你是否很无聊,如果无聊就来学习吧! 世上只有一种投资只赚不赔,那就是学习!!! 传智播客于2020年升级了Java学习线路图,硬核升级,免费放送! 学完你就是中级程序员,能更快一步找到工作! 一、Java基础 JavaSE基础是Java中级程序员的起点,是帮助你从小白到懂得编程的必经之路。 在Java基础板块中有6个子模块的学
B 站上有哪些很好的学习资源?
哇说起B站,在小九眼里就是宝藏般的存在,放年假宅在家时一天刷6、7个小时不在话下,更别提今年的跨年晚会,我简直是跪着看完的!! 最早大家聚在在B站是为了追番,再后来我在上面刷欧美新歌和漂亮小姐姐的舞蹈视频,最近两年我和周围的朋友们已经把B站当作学习教室了,而且学习成本还免费,真是个励志的好平台ヽ(.◕ฺˇд ˇ◕ฺ;)ノ 下面我们就来盘点一下B站上优质的学习资源: 综合类 Oeasy: 综合
你也能看懂的:蒙特卡罗方法
蒙特卡罗方法,也称统计模拟方法,是1940年代中期由于科学技术的发展和电子计算机的发明,而提出的一种以概率统计理论为指导的数值计算方法。是指使用随机数(或更常见的伪随机数)来解决很多计算问题的方法 蒙特卡罗方法可以粗略地分成两类:一类是所求解的问题本身具有内在的随机性,借助计算机的运算能力可以直接模拟这种随机的过程。另一种类型是所求解问题可以转化为某种随机分布的特征数,比如随机事件出现的概率,或...
相关热词 c# 为空 判断 委托 c#记事本颜色 c# 系统默认声音 js中调用c#方法参数 c#引入dll文件报错 c#根据名称实例化 c#从邮件服务器获取邮件 c# 保存文件夹 c#代码打包引用 c# 压缩效率
立即提问