学习Windows程序设计第一件要做的事情

大一学习经验总结 大一学习经验总结 对于学习方法大我想都有自己的一套,其实每个人的都有自己的学习方法,对于其它人的方法对自己来说并不一定是合适的,不过也可以作为一种参考吧,对于有好的方面,我们也可以借鉴。总结大一的学习,当然有好有坏,但总的来说还是比较成功吧,基本上所有的活动都参加过了,可能是大一新生应有的激情吧。在大一我算比较幸运地得到了一等奖学金,在校内软件设计大赛中得到第三名的成绩,还有就是在学生会中顺便地当 阅读详情
Windows程序设计的概况
1.   为什么要学习Windows程序设计而不是一开始就学习MFC???
Windows程序设计是使用C语言和Windows的API函数来进行编程的,而MFC则是封装了WindowsAPI一些琐碎的细节,使用的是C++语言,是面向对象的;因为MFC并不是一个良好的对象模型,使用MFC会在很多方面出现点问题,如果对Windows程序不怎么了解,那么调试起来可能让人难以忍受,甚至很多时候不知道错在哪儿,无法调试!!!
2.   使用什么工具???
           当然是使用微软的VC++6.0了
   
3.Windows程序设计中一些经常出现的概念:
(1).句柄

句柄是WONDOWS用来标识被应用程序所建立或使用的对象的唯一整数,WINDOWS使用各种各样的句柄标识诸如应用程序实例,窗口,控制,位图,GDI对象等等。WINDOWS句柄有点象C语言中的文件句柄。

从上面的定义中的我们可以看到,句柄是一个标识符,是拿来标识对象或者项目的,它就象我们的姓名一样,每个人都会有一个,不同的人的姓名不一样,但是,也可能有一个名字和你一样的人。从数据类型上来看它只是一个16位的无符号整数。应用程序几乎总是通过调用一个WINDOWS函数来获得一个句柄,之后其他的WINDOWS函数就可以使用该句柄,以引用相应的对象。

如果想更透彻一点地认识句柄,我可以告诉大家,句柄是一种指向指针的指针。我们知道,所谓指针是一种内存地址。应用程序启动后,组成这个程序的各对象是住留在内存的。如果简单地理解,似乎我们只要获知这个内存的首地址,那么就可以随时用这个地址访问对象。但是,如果您真的这样认为,那么您就大错特错了。我们知道,Windows是一个以虚拟内存为基础的操作系统。在这种系统环境下,Windows内存管理器经常在内存中来回移动对象,依此来满足各种应用程序的内存需要。对象被移动意味着它的地址变化了。如果地址总是如此变化,我们该到哪里去找该对象呢?

为了解决这个问题,Windows操作系统为各应用程序腾出一些内存储地址,用来专门登记各应用对象在内存中的地址变化,而这个地址(存储单元的位置)本身是不变的。Windows内存管理器在移动对象在内存中的位置后,把对象新的地址告知这个句柄地址来保存。这样我们只需记住这个句柄地址就可以间接地知道对象具体在内存中的哪个位置。这个地址是在对象装载(Load)时由系统分配给的,当系统卸载时(Unload)又释放给系统。


句柄地址(稳定)→记载着对象在内存中的地址────→对象在内存中的地址(不稳定)→实际对象


本质:WINDOWS程序中并不是用物理地址来标识一个内存块,文件,任务或动态装入模块的,相反的,WINDOWS API给这些项目分配确定的句柄,并将句柄返回给应用程序,然后通过句柄来进行操作。


但是必须注意的是程序每次从新启动,系统不能保证分配给这个程序的句柄还是原来的那个句柄,而且绝大多数情况的确不一样的。假如我们把进入电影院看电影看成是一个应用程序的启动运行,那么系统给应用程序分配的句柄总是不一样,这和每次电影院售给我们的门票总是不同的一个座位是一样的道理。

受M$的帮助文档以及很多Windows编程书籍的影响,大家对局柄比较普遍的认识是:句柄是一个整数,用以标识Windows对象,句柄不是一个指针……

 

(2).微软的数据类型
Windows数据类型本质类型字节数定义过程(来历)含义
ATOMunsigned short2unsigned short→WORD→ATOM在Atom表中,一键(16位整数)一值(一个String)为一个Atom。
BOOLint*int→BOOL逻辑变量,布尔值 (取值为 TRUE 或 FALSE)
BOOLEANunsigned char1unsigned char→BYTE→BOOLEAN逻辑变量,布尔值 (取值为 TRUE 或 FALSE)
BYTEunsigned char1unsigned char→BYTE字节型,8位。
CALLBACK__stdcall调用__stdcall→CALLBACK回调函数的调用约定
CHARchar1char→CHAR8位Windows字符(ANSI)
COLORREFunsigned long4unsigned long→DWORD→COLORREF红,绿,蓝(RGB)值
CONSTconst关键字const→CONST常量
CRITICAL_SECTIONRTL_CRITICAL_SECTION结构体?RTL_CRITICAL_SECTION(结构)→CRITICAL_SECTIONCritical-section对象
DWORDunsigned long4unsigned long→DWORD32位无符号整数
DWORD_PTRunsigned long4unsigned long→ULONG_PTR→DWORD_PTR(另有其它路径)略……(用处挺大,不过太长了)
DWORD32unsigned int*unsigned int→DWORD3232位无符号整数
DWORD64unsigned __int648unsigned __int64→DWORD6464位无符号整数
FLOATfloat4float→FLOAT浮点数变量
HACCELHACCEL__结构体指针 由DECLARE_HANDLE(name)宏定义的指向HACCEL__结构体的指针快捷键列表的句柄
HANDLEvoid *(一个地址) void *→HANDLE对象的句柄
HBITMAPHBITMAP__结构体指针 由DECLARE_HANDLE(name)宏定义的指向HBITMAP__结构体的指针位图的句柄
HBRUSHHBRUSH__结构体指针 由DECLARE_HANDLE(name)宏定义……画刷的句柄
HCONVHCONV__结构体指针 由DECLARE_HANDLE(name)宏定义……动态数据交换(DDE)会话的句柄
HCONVLISTHCONVLIST__结构体指针 由DECLARE_HANDLE(name)宏定义……动态数据交换(DDE)会话列表的句柄
HCURSORHICON__结构体指针 HICON__ *→HICON→HCURSOR光标的句柄
HDCHDC__结构体指针 由DECLARE_HANDLE(name)宏定义……设备上下文(DC)的句柄
HDDEDATAHDDEDATA__结构体指针 由DECLARE_HANDLE(name)宏定义……动态数据交换数据的句柄
HDESKHDESK__结构体指针 由DECLARE_HANDLE(name)宏定义……桌面(Desktop)的句柄
HDROPHDROP__结构体指针 由DECLARE_HANDLE(name)宏定义……Handle to an internal drop structure.
HDWPvoid *(一个地址) void *→HANDLE→HDWPHandle to a deferred window position structure.
HENHMETAFILEHENHMETAFILE__结构体指针 由DECLARE_HANDLE(name)宏定义……增强图元文件的句柄
HFILEint*int→HFILE由OpenFile(而不是CreateFile)打开的文件的句柄.
HFONTHFONT__结构体指针 由DECLARE_HANDLE(name)宏定义……字体的句柄
HGDIOBJvoid near * void NEAR *→HGDIOBJGDI对象的句柄
HGLOBALvoid *(一个地址) void *→HANDLE→HGLOBAL全局内存块的句柄
HHOOKHHOOK__结构体指针 由DECLARE_HANDLE(name)宏定义……句子(hook)的句柄
HICONHICON__结构体指针 由DECLARE_HANDLE(name)宏定义……图标的句柄
HIMAGELIST_IMAGELIST结构体指针 _IMAGELIST *→HIMAGELIST图片列表的句柄
HIMCHIMC__结构体指针 由DECLARE_HANDLE(name)宏定义……输入上下文的句柄
HINSTANCEHINSTANCE__结构体指针 由DECLARE_HANDLE(name)宏定义……实例的句柄
HKEYHKEY__结构体指针 由DECLARE_HANDLE(name)宏定义……(另有一条路径,一样)注册表键的句柄
HKLHKL__结构体指针 由DECLARE_HANDLE(name)宏定义……输入点标识符
HLOCALvoid *(一个地址) void *→HANDLE→HLOCAL本地内存块的句柄
HMENUHMENU__结构体指针 由DECLARE_HANDLE(name)宏定义……菜单的句柄
HMETAFILEHMETAFILE__结构体指针 由DECLARE_HANDLE(name)宏定义……图元文件的句柄
HMODULEHINSTANCE__结构体指针 HINSTANCE__*→HINSTANCE→HMODULE模块的句柄。值由模块的位置来决定。
HMONITORHMONITOR__结构体指针 由DECLARE_HANDLE(name)宏定义……显示器的句柄
HPALETTEHPALETTE__结构体指针 由DECLARE_HANDLE(name)宏定义……调色板的句柄
HPENHPEN__结构体指针 由DECLARE_HANDLE(name)宏定义……画(线)笔的句柄
HRGNHRGN__结构体指针 由DECLARE_HANDLE(name)宏定义……区域的句柄
HRSRCHRSRC__结构体指针 由DECLARE_HANDLE(name)宏定义……资源的句柄
HSZHSZ__结构体指针 由DECLARE_HANDLE(name)宏定义……动态数据交换(DDE)字符串的句柄
HWINSTAHWINSTA__结构体指针 由DECLARE_HANDLE(name)宏定义……窗口状态的句柄
HWNDHWND__结构体指针 由DECLARE_HANDLE(name)宏定义……窗口的句柄
INTint*int→INT32位有符号整数
INT_PTRint(_W64 int即__w64 int)*_W64 int→INT_PTR,_W64就是__w64,是为了解决32位与64位编译器的兼容性而设置的关键字用于指针运算
INT32signed int*signed int→INT3232位有符号整数
INT64signed __int648signed __int64→INT6464位有符号整数
LANGIDunsigned short2unsigned short→WORD→LANGID语言标识符
LCIDunsigned long4unsigned long→DWORD→LCIDLocale identifier.
LCTYPEunsigned long4unsigned long→DWORD→LCTYPELocale information type. 
LONGlong4long→LONG32位有符号整数
LONG_PTRlong4_W64 long→LONG_PTR用于指针运算
LONG32signed int*signed int→LONG3232位有符号整数
LONG64__int648__int64→LONG6464位有符号整数
LONGLONG__int648__int64→LONGLONG64位有符号整数
LPARAMlong4_W64 long→LONG_PTR→LPARAM消息的参数
LPBOOLint * int→BOOL, BOOL far *→LPBOOLBOOL类型的指针
LPBYTEunsigned char * unsigned char→BYTE,BYTE far *→LPBYTEBYTE类型的指针
LPCOLORREFunsigned long * unsigned long→WORD,DWORD *→LPCOLORREF颜色值的指针
LPCRITICAL_SECTIONRTL_CRITICAL_SECTION结构体指针 RTL_CRITICAL_SECTION *PRTL_CRITICAL_SECTION→,PRTL_CRITICAL_SECTION→LPCRITICAL_SECTIONCRITICAL_SECTION的指针
LPCSTR静态char * char→CHAR,CONST CHAR *→LPCSTR静态8位Windows字符(ANSI)无终结字符串指针
LPCTSTR静态wchar_t * wchar_t→WCHAR,CONST WCHAR *→LPCWSTR,LPCWSTR→LPCTSTR如果UNICODE已定义则为LPCWSTR,否则为LPCTSTR
LPCVOID静态void * CONST void far *→LPCVOID任何类型的静态指针
LPCWSTR静态wchar_t * wchar_t→WCHAR,CONST WCHAR *→LPCWSTR静态16位Windows字符(Unicode)无终结字符串指针
LPDWORDunsigned long * unsigned long→DWORD,DWORD far *→LPDWORDDWORD的指针
LPHANDLE指向句柄的指针 void *→HANDLE,HANDLE FAR *→LPHANDLEHANDLE的指针
LPINTint * int far *→LPINTINT的指针
LPLONGlong * long far *→LPLONGLONG的指针
LPSTRchar * char→CHAR,CHAR *→LPSTR8位Windows字符(ANSI)无终结字符串指针
LPTSTRwchar_t * wchar_t WCHAR,WCHAR *→LPWSTR,LPWSTR→LPTSTRAn LPWSTR if UNICODE is defined, an LPSTR otherwise.
LPVOIDvoid * void far *→LPVOID任何类型的指针
LPWORDunsigned short * unsigned short→WORD,WORD far *→LPWORDWORD的指针
LPWSTRwchar_t * wchar_t→WCHAR,WCHAR *→LPWSTR16位Windows字符(ANSI)无终结字符串指针
LRESULTlong4_W64 long→LONG_PTR→LRESULT有符号的消息处理结果
LUIDLUID结构  局部唯一标识符
PBOOLint * int→BOOL,BOOL near *→PBOOLBOOL的指针
PBOOLEANunsigned char * unsigned char→BYTE→BOOLEAN,BOOLEAN *→PBOOLEANBOOL的指针
PBYTEunsigned char * unsigned char→BYTE,BYTE near *→PBYTEBYTE的指针
PCHARchar * char→CHAR,CHAR *→PCHARCHAR的指针
PCRITICAL_SECTIONRTL_CRITICAL_SECTION结构体指针 RTL_CRITICAL_SECTION *→PRTL_CRITICAL_SECTION,PRTL_CRITICAL_SECTION→PCRITICAL_SECTIONCRITICAL_SECTION的指针
PCSTR静态char * char→CHAR,CONST CHAR *→PCSTR静态8位Windows字符(ANSI)无终结字符串指针
PCTSTR静态wchar_t * wchar_t→WCHAR,CONST WCHAR *→LPCWSTR,LPCWSTR→PCTSTR如果UNICODE已定义则为PCWSTR,否则为PCSTR
PCWCH静态wchar_t * wchar_t→WCHAR,CONST WCHAR *→PCWCHWCHAR的静态指针
PCWSTR静态wchar_t * wchar_t→WCHAR,CONST WCHAR *→PCWSTR静态16位Windows字符(Unicode)无终结字符串指针
PDWORDunsigned long * unsigned long→DWORD,DWORD near *→PDWORDDWORD的指针
PFLOATfloat * float→FLOAT,FLOAT *→PFLOATFLOAT的指针
PHANDLE指向句柄的指针 void *→HANDLE,HANDLE *→PHANDLEHANDLE的指针
PHKEY指向HKEY的指针 HKEY__ *→HKEY *→PHKEYHKEY的指针
PINTint * int near *→PINTINT的指针
PLCIDunsigned long * unsigned long→DWORD,DWORD near *→PDWORD→PLCIDLCID的指针
PLONGlong * long→LONG,LONG *→PLONGLONG的指针
PLUIDLUID结构体指针 LUID *→PLUID
POINTER_32void * void *→POINTER_3232位指针(详解略)
POINTER_64void * void *→POINTER_6464位指针(详解略)
PSHORTshort * short→SHORT,SHORT *→PSHORTSHORT的指针
PSTRchar * char→CHAR,CHAR *→PSTR8位Windows字符(ANSI)无终结字符串指针
PTBYTEwchar_t * wchar_t→WCHAR,WCHAR *→PTBYTETBYTE的指针
PTCHARwchar_t * wchar_t→WCHAR,WCHAR *→PTCHARTCHAR的指针
PTSTRwchar_t * wchar_t→WCHAR,WCHAR *→LPWSTR→PTSTRPWSTR if UNICODE is defined, a PSTR otherwise.
PTBYTEwchar_t * wchar_t→WCHAR,WCHAR *→PTBYTETBYTE的指针
PTCHARwchar_t * wchar_t→WCHAR,WCHAR *→PTCHARTCHAR的指针
PTSTRwchar_t * wchar_t→WCHAR,WCHAR *→LPWSTR→PTSTRA PWSTR if UNICODE is defined, a PSTR otherwise.
PUCHARunsigned char * unsigned char→UCHAR,UCHAR *→PUCHARUCHAR的指针
PUINTunsigned int * unsigned int *→PUINT(呵呵,为什么不用UINT*来定义呢?)UINT的指针
PULONGunsigned long * unsigned long→ULONG,ULONG *→PULONGULONG的指针
PUSHORTunsigned short * unsigned short→USHORT,USHORT *→PUSHORTUSHORT的指针
PVOIDvoid * void *→PVOID任何类型的指针
PWCHARwchar_t * wchar_t→WCHAR,WCHAR *→PWCHARWCHAR的指针
PWORDunsigned short * unsigned short→WORD,WORD near *→PWORDWORD的指针
PWSTRwchar_t * wchar_t→WCHAR,WCHAR *→PWSTR16位Windows字符(Unicode)无终结字符串指针
REGSAMunsigned long unsigned long→DWORD→ACCESS_MASK→REGSAM注册表值的安全访问掩码
SC_HANDLESC_HANDLE__结构体指针 由DECLARE_HANDLE(name)宏定义……Handle to a service control manager database.
SC_LOCKvoid * void far *→LPVOID→SC_LOCKHandle to a service control manager database lock. 
SERVICE_STATUS_HANDLESERVICE_STATUS_HANDLE__结构体指针 由DECLARE_HANDLE(name)宏定义……Handle to a service status value. 
SHORTshort2short→SHORT短整数类型(16位)
SIZE_Tunsigned long4unsigned long→ULONG_PTR→SIZE_T指针可指向的最大字节数
SSIZE_Tlong _W64 long→LONG_PTR→SSIZE_T有符号SIZE_T.
TBYTEwchar_t2wchar_t→WCHAR,WCHAR→TBYTE如果UNICODE已定义则为WCHAR,否则为CHAR
TCHARwchar_t2wchar_t→WCHAR,WCHAR→TCHAR如果UNICODE已定义则为WCHAR,否则为CHAR
UCHARunsigned char1unsigned char→UCHAR无符号CHAR
UINTunsigned int*unsigned int→UINT无符号INT
UINT_PTRunsigned int*unsigned int→UINT_PTR无符号INT_PTR.
UINT32unsigned int2unsigned int→UINT32无符号INT32.
UINT64unsigned __int644unsigned __int64→UINT64无符号INT64.
ULONGunsigned long4unsigned long→ULONG无符号LONG.
ULONG_PTRunsigned long4unsigned long→ULONG_PTR无符号LONG_PTR.
ULONG32unsigned int2unsigned int→ULONG32无符号LONG32
ULONG64unsigned __int644unsigned __int64→ULONG64无符号LONG64
ULONGLONGunsigned __int644unsigned __int64→ULONGLONG64位无符号整数
UNSIGNED没查到,大家帮忙吧  无符号属性
USHORTunsigned short unsigned short→USHORT无符号SHORT类型
VOIDvoid void→VOID任何类型
WCHARwchar_t2wchar_t→WCHAR16位Unicode字符
WINAPI__stdcall调用__stdcall→WINAPI系统函数(API函数)调用约定
WORDunsigned short2unsigned short→WORD16位无符号整数
WPARAMunsigned int*unsigned int→UINT_PTR→WPARAM消息的参数
int*signed,signed int由操作系统决定,即与操作系统的"字长"有关
unsigned int*unsigned由操作系统决定,即与操作系统的"字长"有关
__int81char,signed char–128 到 127
__int162short,short int,signed short int–32,768 到 32,767
__int324signed,signed int–2,147,483,648 到 2,147,483,647
__int648无–9,223,372,036,854,775,808 到 9,223,372,036,854,775,807
bool1无false 或 true
char1signed char–128 到 127
unsigned char1无0 到 255
short2short int,signed short int–32,768 到 32,767
unsigned short2unsigned short int0 到 65,535
long4long int,signed long int–2,147,483,648 到 2,147,483,647
long long8none (but equivalent to __int64)–9,223,372,036,854,775,808 到 9,223,372,036,854,775,807
unsigned long4unsigned long int0 到 4,294,967,295
enum*无由操作系统决定,即与操作系统的"字长"有关
float4无3.4E +/- 38 (7 digits)
double8无1.7E +/- 308 (15 digits)
long double8无1.7E +/- 308 (15 digits)
wchar_t2__wchar_t0 到 65,535
3.              编写第一个Windows程序                                                                     
/* HelloWorld.c */                                                                         
              1     #include <windows.h>
 
2     int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
                    PSTR szCmdLine, int iCmdShow)
{
            3        MessageBox (NULL, TEXT ("Hello, Windows!"), TEXT ("HelloMsg"), 0) ;
 
             4    return 0 ;
}
下面来解释一下上面的程序:
第一行包含头文件,WINDOWS.H是主要的含入文件,它包含了其它Windows表头文件,这些表头文件的某些也包含了其它表头文件。这些表头文件中最重要的和最基本的是:
  • WINDEF.H 基本型态定义。
     
  • WINNT.H 支持Unicode的型态定义。
     
  • WINBASE.H Kernel函数。
     
  • WINUSER.H 使用者接口函数。
     
  • WINGDI.H 图形设备接口函数。
     
这些表头文件定义了Windows的所有数据型态、函数呼叫、数据结构和常数标识符,它们是Windows文件中的一个重要部分
第二行:Windows程序的进入点是WinMain, 正如在C程序中的进入点是函数main一样
WinMain函数的介绍: WinMain的第一个参数被称作「执行实体句柄」。在Windows程序设计中,句柄仅是一个应用程序用来识别某些东西的数字。在这种情况下,该句柄唯一地标识该程序,还需要它在其它Windows函数呼叫中作为参数。在Windows的早期版本中,当同时运行同一程序多次时,您便创建了该程序的「多个执行实体(multiple instances)」。同一应用程序的所有执行实体共享程序和只读的内存(通常是例如菜单和对话框模板的资源)。程序通过检查hPrevInstance参数就能够确定自身的其它执行实体是否正在运行。然后它可以略过一些繁杂的工作并从前面的执行实体将某些数据移到自己的数据区域。
在32位Windows版本中,该概念已被抛弃。传给WinMain的第二个参数总是NULL(定义为0)。
WinMain的第三个参数是用于执行程序的命令列。某些Windows应用程序利用它在程序启动时将文件加载内存。WinMain的第四个参数指出程序最初显示的方式,可以是正常的或者是最大化地充满整个画面,或者是最小化显示在工作列中
第三行:MessageBox函数的使用:
MessageBox的第一个参数通常是窗口句柄。第二个参数是在消息框主体中显示的字符串,第三个参数是出现在消息框标题列上的字符串。在HELLMSG.C中,这些文字字符串的每一个都被封装在一个TEXT宏中。通常您不必将所有字符串都封装在TEXT宏中,但如果想将您的程序转换为Unicode字符集,这确是一个好主意
MessageBox返回数值1,但更严格地说它返回IDOK,IDOK在WINUSER.H中定义,等于1。根据在消息框中显示的其它按钮,MessageBox函数还可返回IDYES、IDNO、IDCANCEL、IDABORT、 IDRETRY或IDIGNORE。
 
 
 
 
 
                    
 
 
 
 
精通Windows程序设计:从入门到高级应用 本文还有配套的精品资源,点击获取 简介:《Windows程序设计》是一本面向初学者的权威教程,专注于使用Microsoft Visual C++开发高效的Windows应用程序。本书详细介绍了Windows编程基础,包括Windows API、Visual C++ IDE、MFC库、消息机制、控件与窗口、资源管理、编译链接过程、调试技巧、异常处理、多线程编程以及文件操作和网... 阅读详情

相关推荐

西门子RS485自由口通信Modbus RTU 通信协议

部分西门子的RS485模块不能使用西门子自带的Modbus RTU通信指令,需要通过自己拼接、发送、接收和解析报文完成Modbus RTU通信。通过多次尝试完成该功能: #R_TRIG_Instance(CLK := #触发, Q => #触发上升沿); IF #触发上升沿 THEN // 触发后先将读取完成复位 #读写完成 := 0; END_IF; CASE #功能码 OF 1: // 线圈状态读取 ; 2:

qq_20792765的博客 1万+

linux c转windows c要做的事情。

检查源代码是否使用了Linux特有的API或库。文件系统相关Linux下面,文件换行是"\n",而windows下面是"\r\n"。Linux下面,目录分隔符是"/",而windows下面是"\"。Linux中可根据stat的st_mode判断文件类型,有S_ISREG、S_ISDIR等宏。

。橙子(Chengs)的博客 1732

别再乱刷了!《另一个伊甸》异节、改典、典录获取途径完全梳理,这些隐藏奖励你拿全了吗?

本文全面解析《另一个伊甸》中异节、改典、典录的获取途径,包括断章、外传、精灵试炼等高概率掉落副本,以及隐藏任务、限时活动和特殊挑战。提供高效收集策略和优先级建议,帮助玩家快速获取这些稀缺资源,实现角色真证和上限突破。

weixin_42699679的博客 586

有关C++几个重要的字符类型,LPCWSTR,LPCSTR,PCWSTR,TCARH

好久没有编写C++程序了,最近开始编写,好手生呀。。开始编写的时候就遇到一个问题。。 编译错误。cannot convert parameter * from 'const char [**]' to 'LPCWSTR' ,于是乎就带着这个问题把字符集学习一下。 在百度百科上查了TCHAR,原来是这样的。如下文: 定义   TCHAR是通过define定义的字符串宏 使用原理   因为

braveheart_xzg的专栏 1828

Ubuntu终端AI编程助手配置:Claude Code接入DeepSeek模型全攻略

在软件开发领域,AI编程助手正成为提升开发效率的重要工具。其核心原理是通过大语言模型理解自然语言指令,生成、解释或调试代码。这类工具的技术价值在于将AI能力无缝集成到开发工作流中,减少上下文切换,实现更流畅的人机协作。常见的应用场景包括代码生成、错误调试、代码重构和技术问答等。本文聚焦于在Ubuntu系统中,将流行的终端AI助手Claude Code的后端模型从原版Claude替换为DeepSeek。通过配置环境变量实现API端点和模型的映射,这一过程涉及Node.js环境管理、npm包安装和关键环境变量设

weixin_42527654的博客 377

《哥谭神话-工程篇》01.Palantir 平台架构解析-混乱数据如何转化唯一真相源?

Palantir 平台的架构哲学可以概括为将洞察落地为行动,其核心是将“获取唯一真相”能力深度嵌入现有的、复杂的工作流程中,成为提升运营效率和决策质量的倍增器。

897

C++:char*类型的实参和PCWSTR类型不兼容

在使用Visual Studio 2017进行C++网络编程的时候,遇到了char*类型的实参和PCWSTR类型不兼容的问题: 解决方法: 点击菜单“项目”里面的最后一个“***属性”: 选择“常规”,把字符集选项改成“未设置”即可: ...

weixin_45138590的博客 1357

LQR控制算法调参指南:如何通过Bryson‘s Rule和Trial-and-Error优化自动驾驶性能?

本文深入探讨了LQR控制算法在自动驾驶系统中的调参策略,从Bryson's Rule的基础应用到工程落地的优化方法。通过动态权重适应、非对角项引入和多目标权衡等技巧,提升车辆轨迹跟踪精度与操控舒适性。文章还介绍了数据驱动的调参流程和典型问题的解决方案,为自动驾驶工程师提供实用指南。

kkk56的博客 1024

Windows 字符串详解及转换

最近一直在做基于Windows的开发,而windows的开发当中最让我迷惑的一个问题就是无穷无尽的字符串类型,char*, wchar *, lpstr, lptstr, lpctstr等等,然后还要经常涉及到其中的相互转换,所以想系统的研究一下所有的windows类型及其相互转换的关系。1.字符类型讲到字符串,首先首先需要了解的是字符,在Windows中主要包含两种字符,一...

weixin_34177064的博客 582

告别ZotFile!Zotero 7+百度网盘文献同步全攻略(含软链接避坑指南)

本文针对Zotero 7用户,提供了告别ZotFile插件后,利用百度网盘实现文献附件同步的完整解决方案。详细讲解了如何通过设置Zotero链接目录与创建软链接,将附件库迁移至云盘,并附有详细的避坑指南,确保数据安全与多设备同步的稳定性。

mmm90的博客 586

X书关键词协议搜索

【代码】X书关键词协议搜索。

Codeooo 博客 6377

windows字符和字符串处理

windows字符和字符串处理 Windows定义的Unicode数据类型有:   WCHAR                     Unicode字符   PWSTR                     指向Unicode字符串的指针   PCWSTR                    指向一个恒定的Unicode字符串的指针 相对应的ANSI数据类型

chenglinhust的专栏 1251

部署OpenClaw(ClawdBot、MoltBot)后访问localhost:18789报1008错误怎么办?

部署openclaw(曾用名ClawdBot、MoltBot)后访问localhost:18789出现1008授权错误❌?本文分享如何快速解决这个问题✅

XiaoqiangClub的博客 1万+

windows开机之后我做的事情

windwos开机之后的软件安装配置

大草的博客 2048

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

windows系统将一个进程放入一个作业中(SetInformationJobObject函数的使用),以限制此进程具体能够做那些事情

windows系统将一个进程放入一个作业中(SetInformationJobObject函数的使用),以限制此进程具体能够做那些事情。

zhyjhacker的博客 483

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

windows核心编程:5章:将一个进程放入一个作业中,以限制此进程具体能够做那些事情

windows核心编程:5章:将一个进程放入一个作业中,以限制此进程具体能够做那些事情。

zhyjhacker的博客 337

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

让程序空闲时做一些事情的函数

while (1)//有消息}else{return 0;}else{//没有消息。

qq_15862613的博客 346

从学习C++到用C++做外挂

<br />我学习C++已经2个月了,从语法到sdk到MFC到现在亲手做外挂经历了很多,我把自己的学习过程帖出来,只是希望自己的经历给新手们做个参考,高手不要笑话我了。我把这个过程写成日记,打算边完成这个外挂边更新此帖,如果大家觉得还可以就回下吧,希望高手多提意见,最好能加我讨论。<br /><br /> 小新外挂开发日记(一)<br /> 以前读书非常喜欢玩游戏,还记得当年每夜通宵,白天趴在桌上"画地图"的日子,现在一晃工作好多年了,日子并没有发生什么改变,也许只是年龄变大了。总希望自己能多挣

qqmmcc的专栏 7991

Windows程序设计 - 错误处理

第一件事情,我们使用的就是Windows提供的SDK,常见的函数的返回的数据类型有VOID(不可能失败的函数,很少有函数的返回类型是VOID)BOOL(函数失败返回0,反之返回的是一个非0的值,一个好的办法是检查这个函数的返回值是不是False来断言他是否失败!PVOID(函数调用失败返回NULL,否则会标识一块内存)LONG/DWORD,这类函数请查看具体的SDK说明!一个好的办法就是立马查看GetLastError返回最近的一次错误!

charlie114514191的博客 455

关于能否用DeepSeek做危险的事情,DeepSeek本身给出了答案

比如,在训练数据中排除了有害内容,或者在模型内部设置了过滤机制,当检测到用户输入涉及违法或不道德的内容时,会自动拒绝回应。其次,本地部署的情况下,用户可能有更多的控制权,可以修改模型参数或者绕过某些限制。因此,DeepSeek可能需要持续更新安全机制,修复潜在的漏洞,同时建立一个报告和反馈系统,让用户能够举报滥用行为,从而及时应对新的威胁。还需要考虑的是,模型本身是否具备自我监控的能力,比如记录用户的操作日志,检测异常行为,并在检测到可疑活动时自动触发保护措施,比如停止服务或者通知管理员。

weixin_41281933的博客 84
上一篇: C语言中的程序控制结构
下一篇: 谈谈Java中的内部类
Cpp_Java_Man
博客等级 码龄21年 26粉丝 67原创
评论 7
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值