知了博客

集天地之精华,吸日月之灵气

ATL.SubclassWindow分析

ATL.SubclassWindow分析
[template

BOOL CWindowImplBaseT< TBase, TWinTraits >::SubclassWindow(HWND hWnd)

{
BOOL result;

ATLASSUME(m_hWnd == NULL);

ATLASSERT(::IsWindow(hWnd));


// Allocate the thunk structure here, where we can fail gracefully.

...

WM_DESTROY与WM_CLOSE

由于wce中,要重写wtl的CFrameWindow,然后采用CWindowImpl去实现View,view里面加入了函数:
并加入CWindowImpl实现的CButton成员函数:
CMYButton m_btn1;
...

 

使用虚列表和自画实现文件夹的缩略图显示

预备性阅读

在阅读本文之前,建议先对列表视图控件和系统外壳有一个基本的了解。建议阅读以下SDK文章

atl CSimpleArray

// This is a part of the Active Template Library.
// Copyright (C) Microsoft Corporation
// All rights reserved.
//
// This source code is only intended as a supplement to the
// Active Template Library Reference and related
...

无效区域与有效区域

无效区域与有效区域

下面这段话摘自<>对无效区域与有效区域描述的部分:
尽管窗口消息处理程序一旦接收到WM_PAINT消息之后,就准备更新整个显示区域,但它经常只需要更新一个较小的区域(最常见的是显示区域中的矩形区域)。显然,当对话框覆盖了部分显示区域时,情况即是如此。在擦除对话框之后,需要重画的只是先前被对话框遮住的矩形区域。

这个区域称为「无效区域」或「更新区域」。正是显示区域内无效区域的存在,才会让Windows将一个WM_PAINT消息放在应用程序的消息队列中。只有在显示区域的某一部分失效时,窗口才会接受WM_PAINT消息。
...

第一个win32程序

#include "stdafx.h" LRESULT CALLBACK MainWndProc(HWND, UINT, WPARAM, LPARAM); int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstatnce, LPSTR lpstrCmdLine, int nCmdShow = SW_SHOW) { MSG msg; WNDCLASS ws; ws.style = 0; ws.lpfnWndProc = (WNDPROC)MainWndProc; ws.cbClsExtra = 0; ws.cbWndExtra = 0; ws.hInstance = hInstance; ws.hIcon = LoadIcon(NULL, IDI_APPLICATION); ws.hCursor = LoadIcon(NULL, IDC_ARROW); ws.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1); ws.lpszClassName = L"my"; ws.lpszMenuName = NULL; if(!RegisterClass(&ws)) return FALSE; HWND hWndMain; hWndMain = CreateWindow( L"my", L"显示window", WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, hInstance, NULL ); if(!hWndMain) return FALSE; ShowWindow(hWndMain,nCmdShow); while(GetMessage(&msg, NULL, 0,0)) { TranslateMessage(&msg); DispatchMessage(&msg); } return 0; } LRESULT CALLBACK MainWndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { static HDC hDc; static LPPAINTSTRUCT pt; HICON ghIcon = NULL; HBITMAP ghbmMask = NULL; HBITMAP ghbmColor = NULL; RECT rt ={0,0,100,20}; static HDC dc; HPEN hPen; static int i = -10; switch (uMsg) { case WM_PAINT: PAINTSTRUCT ps; HDC hdc; COLORREF crTxt, crBk; hDc = BeginPaint(hWnd, &ps); EndPaint(hWnd, &ps); break; case WM_ERASEBKGND: dc = ::GetDC(hWnd); ::FillRect(dc,&rt,(HBRUSH)::GetStockObject(BLACK_BRUSH)); ::DrawText(dc,L"文字显示 ", -1, &rt, DT_VCENTER|DT_CENTER); ::ReleaseDC(hWnd,dc); break; case WM_LBUTTONDOWN: i += 10; rt.top += 3*i; rt.bottom = rt.top + 20; hPen=CreatePen(PS_INSIDEFRAME,1,RGB(0,255,255)); dc = ::GetDC(hWnd); SelectObject(dc,hPen); ::DrawText(dc,L"文字显示 ", -1, &rt, DT_VCENTER|DT_CENTER); MoveToEx(dc,0,i, NULL); LineTo(dc,800,i); ::ReleaseDC(hWnd,dc); //MessageBox(NULL,L"OK",NULL,NULL); break; case WM_RBUTTONDOWN: //MessageBox(NULL,L"right OK",NULL,NULL); break; case WM_DESTROY: PostQuitMessage(0);break; default: return (DefWindowProc(hWnd, uMsg, wParam, lParam)); } return 0; }

...

vc中error LNK2001:unresolved external symbol _WinMain@16的解决方法

一,问题描述

error LNK2001: unresolved external symbol _WinMain@16
debug/main.exe:fatal error LNK 1120:1 unresolved externals
error executing link.exe;

二,产生这个问题可能的原因

1, 你用vc建了一个控制台程序,它的入口函数应该是main, 而你使用了WinMain.

...

WinCE下直接启动自己应用程序的方法

WinCE下直接启动自己应用程序的方法

    其实让一个程序在wince里启动和windows里差不多,直接设置其为启动项,这个有几个方法。一个就是制作一个快捷方式,指向我们的应用程序如app.exe,然后将快捷方式放到\windows\startup下面。
...

匿名对象生存周期

匿名对象生存周期什么是匿名对象?匿名对象简单的说就是没有名字的对象,和临时对象是完全不相同的。比如交换两个变量a、b的值通常做法是使用一个临时变量...

对话框条的制作CDialogBar

1.创建对话框资源:在对话框资源编辑器内生成一个属性必须设置为....
分页:« 首页...«3132333435363738394041424344»...尾页 »

日历

<< 2024-11 >>

Sun

Mon

Tue

Wed

Thu

Fri

Sat

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

Powered By Z-Blog 1.8 Arwen Build 90619 Code detection by Codefense  theme by BokeZhuti

Copyright know blog. Some Rights Reserved.站长(msn):webmaster#webgou.info(#换成@) 粤ICP备09183716号