存档

文章标签 ‘GUI’
445 views

Tips of Windows Programming

2010年6月11日

窗口总在最前

	::SetWindowPos(hWnd, HWND_TOPMOST, 0, 0, 0, 0,
		SWP_NOMOVE|SWP_NOSIZE|SWP_NOACTIVATE);

窗口总保持激活状态, 这段代码可以放在定时器内.

void KeepWindowAlwaysActive(HWND hWnd)
{
	HWND hCurWnd = NULL;
	DWORD lMyID = 0;
	DWORD lCurID = 0;

	hCurWnd = ::GetForegroundWindow();
	if(hCurWnd != hWnd)
	{
		lMyID = ::GetCurrentThreadId();
		lCurID = ::GetWindowThreadProcessId(hCurWnd, NULL);
		::AttachThreadInput(lMyID, lCurID, TRUE);
		::SetForegroundWindow(hWnd);
		::AttachThreadInput(lMyID, lCurID, FALSE);
	}
}

怎么跟自旋锁打交道

The code within a critical region guarded by an spin lock must neither be pageable nor make any references to pageable data.
The code within a critical region guarded by a spin lock can neither call any external function that might access pageable data or raise an exception, nor can it generate any exceptions.
The caller should release the spin lock with KeReleaseSpinLock as quickly as possible.

阅读全文…

内核编程, 技术心得 , , , ,

576 views

MFC 程序员的 WTL 教程 ( 1 ) — ATL 中的 GUI 类

2010年1月4日
链接:下一部分

第一部分 – ATL 中的 GUI 类

本章内容

  • README.TXT
  • 本系列介绍
  • 第一部分介绍
  • ATL 背景知识
    • ATL 和 WTL 的历史
    • ATL 风格的模板
  • ATL 窗口类
  • 定义窗口实现
    • 填充消息映射
  • 高级消息映射链和嵌入(Mix-in)类
  • ATL EXE 的结构
    • VC 6 的情形
    • VC 7 的情形
  • ATL 中的对话框
  • 就要到 WTL 了,我保证!
  • 修订历史

README.TXT

在继续或者在本文的讨论板块中发布帖子之前,我希望你能先阅读以下内容。

本系列原来是为 VC 6 用户写的,介绍 WTL 7.0 的内容。现在 VC 8 已经出来了,我觉得也到了更新本系列来介绍 VC 7.1 的时候了。;)(不过,VC 7.1 的从 6 到 7 的自动转换工作并不是总能平滑地完成,所以 VC 7.1 的用户在试着使用示例源代码的时候可能会遭遇失败)因而,我将继续下去,持续更新本系列。文章将更新到可以反映 WTL 7.1 的特性,并会在下载的源代码中包括 VC 7.1 的工程。

针对 VC 2005 用户的重要提示:VC 2005 的 Express 版本并附带 ATL 或者 MFC,因此不能使用此版本编译 ATL 或者 WTL 工程。

阅读全文…

MFC 程序员的 WTL 教程, WTL , , ,