手工添加訊息響應函數

手工添加訊息響應函數手工訊息響應函數,最原始的方法是,在訊息映射表中,添加一個合適的訊息映射表項.首先看看訊息映射表項:struct AFX_MSGMAP_ENTRY{UINT nMessage; // windows messageUINT nCode; // control code or WM_NOTIFY codeUINT nID; // control ID (or 0 for windows messages)UINT nLastID; //

建立指定大小的檔案

方法一:#include <windows.h>void main(){int size = 24;//24個位元組HANDLE hFile = CreateFile("test.dat", GENERIC_WRITE|GENERIC_READ, FILE_SHARE_READ, 0, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);HANDLE hMap = CreateFileMapping(hFile, 0,

多檔案程式設計中標頭檔若干問題

多檔案程式設計中標頭檔若干問題2010-12-21晴首先說明的是標頭檔可以不存在的,因為用#include語句將其包含進源檔案時,只是簡單地將其內容複寫入源檔案中。它起的作用是避免程式員手工複製,並使代碼更為簡潔。所以多檔案程式設計可以看成多源檔案程式設計。多檔案程式設計中,檔案之間的問題,無非就是共用資料的問題。這些共用資料可以是全域變數、全域函數、自訂資料類型等。標頭檔中的全域變數與全域函數。標頭檔中的防重定義宏,只是保證同一個源檔案中不會多次包括這個標頭檔。但這個標頭檔可以被多個源檔案所包

獲得當前使用網卡名

#include <windows.h>#include <IPHlpApi.h>//for GetAdaptersInfo#include <stdio.h>#pragma comment(lib, "Iphlpapi.lib")void GetAdapterName(char* AdapterName){unsigned long len=0;PIP_ADAPTER_INFO pinfo = NULL;GetAdaptersInfo(pinfo,&

關於WM_ERASEBKGND和WM_PAINT的深刻理解

關於WM_ERASEBKGND和WM_PAINT的深刻理解一直以來,對於WM_PAINT和WM_ERASEBKGND訊息不是很清楚,從書上和網上找了很多資料,大體上有以下幾點說法:1.WM_PAINT先產生,WM_ERASEBKGND後產生2.WM_PAINT產生後,在調用hdc = BeginPaint(hWnd, &ps);

使用RegEnumValue清理IE記錄

#include <windows.h>#include <tchar.h>//for '_T': identifier not found#include <iostream>using namespace std;BOOL ClearHistory(){HKEY hKEY;HKEY hKeyRoot = HKEY_CURRENT_USER;DWORD index = 0;TCHAR valueName[MAX_PATH];BYTE

為custom dialog box class定義兩個視窗過程

 #include <windows.h>#include "resource.h"LRESULT CALLBACK WindowProc( HWND hwnd,UINT uMsg,WPARAM wParam,LPARAM lParam){switch ( uMsg ){case WM_CLOSE:::PostQuitMessage(0);break;}return ::DefDlgProc(hwnd, uMsg, wParam,

組合語言多檔案程式設計

組合語言多檔案程式設計2011-11-7 晴 於韶關仁化變數的共用         關鍵字externdef跟C語言中的extern相似。在定義與引用模組(源檔案)中的聲明的一致的。聲明格式:         EXTERNDEF [[langtype]] name:type [[, [[langtype]] name:type]]...MSDN Remars:         If name is defined in the module, it is treated as PUBLIC.

offset與lea

 offset與lea    offset是操作符(或說偽指令);lea是硬指令,其運算元必須為記憶體運算元;offset在編譯階段得出位移地址;lea在程式執行的時候才去的位移地址;offset經過編譯後,得到的是運算元是一個數值。從速度上來說,要比lea來得快! 但是,從複雜度和靈活性來說,lea則遠遠超過offset。下面的指令是非法的:MOV AX,OFFSET [BX+200]因為人BX+200的值在編譯的時候無法確定。但可以用lea語句來代替:LEA AX,[BX+200]也等價於:

使用offset編寫通用鏈表遍曆函數

#include <stdio.h>#include <stdlib.h>struct node{int data;struct node* next;};//************************************// Method: Travel通用遍曆函數// FullName: Travel// Access: public// Returns: void// Qualifier:// Parameter: char *

索引標籤控制項SDK程式

 #undef UNICODE#undef _UNICODE#include <windows.h>#include <commctrl.h>#include "resource.h"BOOL CALLBACK DialogProc( HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam ){TCITEM item;RECT rcClient, rcTab;static HWND hTabCtl;static

#pragma once與#ifndef

#pragma once與#ifndef防止標頭檔包含的方法有兩種,一種是使用#pragam once,一種是使用#ifndef宏。兩種方法的作用是一樣的,但原理不同。slimfox部落格《#pragma once 與 #ifndef 解析 》原文說得很好:“#ifndef的方式依賴於宏名字不能衝突,這不光可以保證同一個檔案不會被包含多次,也能保證內容完全相同的兩個檔案不會被不小心同時包含。當然,缺點就是如果不同標頭檔的宏名不小心“撞車”,可能就會導致標頭檔明明存在,編譯器卻硬說找不到聲明的狀況

自動機、正則式、正則文法和上下文無關文法

自動機、正則式、正則文法和上下文無關文法自動機概念[1]:自動機是有限狀態機器(FSM)的數學模型。FSM 是給定符號輸入,依據(可表達為一個表格的)轉移函數“跳轉”過一系列狀態的一種機器。包括:確定有限自動機DFA,非確定有限自動機NFA有限自動機的擴充:下推自動機(PDA) 線性有界自動機(LBA)圖靈機 (Turing  Machine)無限自動機百度百科上有,但不瞭解。Regex與有限自動機及正則文法的關係:三者功能是等價的。DFA與NFA之間可以相互轉換,而Regex可以方便地構造,自

不指定主視窗,程式不能退出訊息泵

 下面是InitInstance() 中的一段代碼 MyWnd tWnd; //自訂的一個視窗類別 CRect rc(100,100,600,550); tWnd.CreateEx(0,_T("Button"),_T("my name is button"),WS_POPUP,rc,NULL,0); tWnd.ShowWindow(SW_SHOW); this->m_pMainWnd = &tWnd; //1)程式可以正常退出 //this->m_pMainWnd =

解決“沒有可用於當前位置的原始碼”問題

   我寫了一個函數,昨天還能在這個函數中加入斷點進行調試,但是今天卻跳不進去了。按F11單步運行,發現出現"沒有可用於當前位置的原始碼"。同樣彈出“源檔案與模板產生時的檔案不同”對話方塊。弄了半天,還是沒有解決。提供幾種方法: 1. (我用這個辦法獲得成功)工具->選項->調試->常規->去掉“要求源檔案與原始版本完全符合”複選框就OK///現在回想一下,我在進行調試的時候在 appmodul.cpp的檔案之中多加了幾個空格,也可以直接改掉那個已經產生appmodul.

沒用指標卻影響值

typedef struct Symbol{char* name;}Symbol;typedef union Token{Symbol* symt;double value;}Token;void Fn( Token t ){t.symt->name = "hello world!";//利用了Token中的指標}void main(){Token t;t.symt = malloc(sizeof(Symbol));t.symt->name = "hello snnu!";Fn(t)

一種保持VC對話方塊布局的簡便方法

   在視窗可縮放的VC應用程式中,在縮放時保持視窗的布局很重要。網上有很多複雜的布局控制碼可供參考。有些代碼很強大,但如果你的視窗只是個簡單的對話方塊,也許可以試試本文的方法。這個方法夠簡單。 別去管那些錨點、對齊之類的詞彙了,強大的功能在某種程度上也意味著更多的代碼。簡單地記住當前的視窗布局,然後按比例縮放這些控制項。這樣的方法在很多應用中,效果也非常不錯。 本著更簡單的精神,我沒有定義一個基類來讓你繼承,也沒有類讓你使用,甚至沒有寫一個函數。我寫了三個宏!#define

使用windbg查看PE結構

使用windbg查看PE結構實驗環境:WIN7 32bit 編譯器:Microsoft (R) Macro Assembler Version 6.14.8444Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 15.00.30729.01 for 80x86查看模組PE結構大體情況:查看模組PE結構詳細情況:    EXE檔案中,不一定含有PE結構符號,但ntdll.dll中是一定有的。獲得這些結構符號之後,在dt命令中可以直接使用,

MFC註冊視窗類別

MFC帶有註冊("register")字樣的函數不少呀!主要有下面幾個:AfxDeferRegisterClassBOOL AFXAPI AfxEndDeferRegisterClass(LONG fToRegister)LPCTSTR AFXAPI AfxRegisterWndClass(UINT nClassStyle,HCURSOR hCursor, HBRUSH hbrBackground, HICON hIcon)BOOL AFXAPI

補碼與算術右移指令

 補碼與算術右移指令補碼雜談補碼的優越性,使得用最高位作符號的原碼顯得多餘。正數的補碼是它本身,負數的補碼通過對其絕對值進行求補獲得。求補運算是將數值按位取反,再加一。不要與補碼的概念混淆。它具有許多的優良的特性。求補過程與反求補過程為同一過程,也就是說,對一個數求補兩次後,還是這個數本身。通過補碼的物理意義這是很好理解的。也可以分析求補的運算過程來說明。對某數按位取反後,加上1,這時開始從最低位向高位進位,直到某個高位上為零,無法向更高位進位為止(當然有個極端的情況的就是對0求補,而0的求補結

總頁數: 61357 1 .... 13137 13138 13139 13140 13141 .... 61357 Go to: 前往

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.