您正在查看 "win32/wtl" 分类下的文章
2009年07月19日 星期日 下午 08:30
近期初学winsock2……,编写了一个小小的使用IOCP的服务器测试程序。总结了一下程序的重点部分: 为何使用IOCP: 1、传统的socket服务程序流程是这样: 创建侦听socket -> 绑定socket和IP、端口号 -> listen() -> 循环accept客户端的连接、收发数据recv/send 此模型很古董,俺觉得也没什么实用价值……因为accept()函数,revc()/send()都是阻塞式的,如果有客户端响应慢等情况,服务器线程会卡在这些函数上出不来,状似瘫痪。 2、多线程模型: 与前面 |
2009年03月04日 星期三 下午 09:04
假如在 List View Control 中显示一些文件和它们的图标,但是这些文件存放在数据库中,不是真实存在于硬盘上面的文件,通过SHGetFileInfo()函数可以实现此功能。
SHGetFileInfo()函数可以获取真实存在的文件的图标,也可以根据扩展名获取实际上不存在的文件的图标。在List View创建初始化时,加入如下代码:
|
2008年10月22日 星期三 下午 11:00
下面这个例子将"ping 127.0.0.1"原本在命令行窗口输出的内容,显示到窗口程序的消息框中 。以下的代码是Windows应用程序的一部分,需加到完整的程序中才能使用
void go(HWND hwnd)
{
char * ping = "PING 127.0.0.1"; // 命令
char pbuf[1024]; // 缓存
DWORD len;
STARTUPINFO si;
PROCESS_INFORMATION pi;
HANDLE hRead1, hWr |
2008年10月22日 星期三 上午 11:03
Windows平台下主要的内存管理途径:
new / delete
malloc / free
CoTaskMemAlloc / CoTaskMemFree
IMalloc::alloc / IMalloc/free
GlobalAlloc / GlobalFree
LocalAlloc / LocalFree
HeapAlloc / HeapFree
VirtualAlloc / VirtualFree
VirtualAlloc以页面为单位(4K)进行分配,是操纵虚拟内存的底层函数。
HeapAlloc在指定堆上分配内存。 |
2008年10月20日 星期一 下午 04:17
作者:blueelf
一.本文将向读者介绍下面两个问题的解决方案:
1,用户在资源管理器(Windows Explorer)中剪切/拷贝(Cut/Copy)文件,然后在自己的应用程序中进行粘贴(Paste)操作;
2.用户在自己的应用程序中剪切/拷贝文件,在资源管理其中粘贴操作。
二.本文中的代码编写工具及测试环境:
1,VC6.0, Platform SDK(无 |
2008年10月19日 星期日 下午 03:50
WTL提供的CString类在ATL中也提供了相同的类后变得有点鸡肋,并且使用WTL::CString类后,经常会出现标题所示的编译错误。实际上ATL不仅在<atlstr.h>中提供了CString类,还在<atltypes.h>中提供了CPoint、CSize和CRect类,因此,WTL中提供的同名类变得可有可无。我认为还是用ATL中的类会好一些,毕竟WTL没有文档嘛。
因此,应该在工程头文件中包含任何WTL头文件前定义以下两行:
#define _WTL_NO_CSTRING
#define _WTL_NO_WTYP |
2008年10月17日 星期五 下午 03:50
2008年10月14日 星期二 上午 00:32
根据实验室要求使用WTL编写了具有XP侧边栏风格的程序ExplorerBar,编写完成将重点备忘如下:
1. 基于SDI的程序中,框架窗口内的View子窗口可以是基于Dialog的,只要创建一个类并派生自CDialogImpl,并在类中声明enum{ IDD = 对话框资源ID }
2. 如果想重绘Dialog的背景,最好让对应的Dialog关联的类派生自CDoubleBufferImpl类并实现DoPaint函数以双缓冲的形式绘制,这
|
2008年10月11日 星期六 下午 04:43
在Win32的GUI程序中,没有控制台窗口,我们输出调试信息时有些不方便,以往我的做法是使用MessageBox弹出对话框、OutputDebugString向VS的调试窗口输出信息等,但总感觉不如控制台输出几句printf有效率。经过尝试发现GUI程序照样能够拥有(且仅能够拥有一个)控制台窗口,具体做法如下:
#include <locale.h>
在程 |
2008年10月10日 星期五 下午 08:37
使用WTL的CDoubleBufferImpl类可以方便的实现双缓冲,而不必自己实现繁琐的代码,不仅可以绘制一般窗口,也可以绘制对话框的背景等。
首先 #include <atlframe.h>
其次需要双缓冲画图的类需要派生自CDoubleBufferImpl<>:
class CMainDlg : public CDialogImpl<CMainDlg>, public CDoubleBufferImpl<CMainDlg>{}
然后消息链中加入
|
|
|