博文
MFC中模拟进程间的通信(2010-04-02 14:06:00)
摘要:void CClipDlg::OnButton1() { // TODO: Add your control notification handler code here
if(OpenClipboard()) { CString mystr; HGLOBAL hClip; char *pstr; // OpenClipboard(); EmptyClipboard(); GetDlgItemText(IDC_EDIT1,mystr); hClip = GlobalAlloc(GMEM_MOVEABLE,mystr.GetLength()+1); pstr =(char *) GlobalLock(hClip); strcpy(pstr,mystr); GlobalUnlock(hClip); SetClipboardData(CF_TEXT,hClip); CloseClipboard(); }}
void CClipDlg::OnButton2() { // TODO: Add your control notification handler code here if(OpenClipboard()) { if(IsClipboardFormatAvailable(CF_TEXT)) { HGLOBAL hclip; char *pstr; ......
创建窗口分区的方法步骤(2009-10-19 11:00:00)
摘要:最近在搞一个进行OpenGL编程的框架模板,采用的技术是mfc中的窗口分区视图的方法来显示。但一开始创建窗口分区的时候老是提示创建空白文档失败的错误,后来经过修改,运行正确。下面将这个方法与大家共享。本例不包含任何实质性的操作。仅实现窗口分区。
步骤:
1、创建一个mfc的SGI工程。
2、利用资源管理器创建两个对话框。命名分别为Dialog1、Dialog2.
3,将这两个新建对话框的style属性设置成Child
4、为这两个对话框添加两个类,基类为视图类,假设类名为:Child1.Child2
5,在框架的实现文件中添加刚才新建的两个对话框的头文件
6,重在主框架的OnCreateClient()函数,在函数体中添加如下代码:
7, 在主框架的的头文件中添加public成员变量 CSplitterWnd m_csplitter;
CRect re;
GetCliebtRect(&re);
CSize paine(re.width()/3,re.Height());
m_csplitter.Create(this,1,2);//创建的窗口分区为1行两列
m_csplitter.CreateView(0,0,RUNTIME_CLASS(Child1),panine,pContext);
m_csplitter.CreateView(0,1,RUNTIME_CLASS(Child2),panine,pContext);
return;
8,编译运行即可
请勿私自转载......
椭圆自动变形(2009-09-30 17:09:00)
摘要:下面这段代码是在窗口中按下CTROL后画一个椭圆。然后按上下左右键改变椭圆的形状,pageup pagedown键改变椭圆位置。
具体请看代码。呵呵
//全局变量
int icount;int lx=200,ly=200,rx=400,ry=300;//矩形的长宽高#ifndef VK_PAGE_UP#define VK_PAGE_UP 0x021#define VK_PAGE_DOWN 0x022#endif
//具体代码处理逻辑
LRESULT CALLBACK WndProc(HWND hWnd,UINT message,WPARAM wParam,LPARAM lParam){ HDC hdc; PAINTSTRUCT ps; HPEN hP; switch(message) { case WM_KEYDOWN: { switch(wParam) { case VK_CONTROL: icount=1; lx=200,ly=200,rx=400,ry=300; InvalidateRect(hWnd,NULL,TRUE); break; case VK_RIGHT: ......
窗体处理键盘输入代码(2009-09-29 21:19:00)
摘要:此代码仅支持ctrl \up\down\shift的简单处理。组合键还在学习中。有知道的可以共享一下。先谢谢啦
LRESULT CALLBACK WndProc(HWND hWnd,UINT message,WPARAM wParam,LPARAM lParam){ HDC hdc; PAINTSTRUCT ps; TEXTMETRIC tm; //PIONT pt; char *str[]= { "您按了UP键", "您按了SHIFT键", "您按了CTRL和A键", "您按了DOWN键" }; //RegisterHotKey(hWnd,1,VK_CONTROL,VK_A); switch(message) { case WM_KEYDOWN: { switch (wParam) { case VK_UP: icount=1; break; case VK_SHIFT: icount=2; break; case VK_CONTROL: icount=3; break; case VK_DOWN://&&VK_B: icount......
vc实现字体的移动和变色(2009-09-27 17:10:00)
摘要:代码如下,具体意思不再赘述,很简单.
#include<windows.h>#include<stdlib.h>#include<string.h>
LRESULT CALLBACK WndProc(HWND hWnd,UINT message,UINT wParam,LONG lParam);BOOL InitWindowsClass(HINSTANCE hInstance);BOOL InitWindow(HINSTANCE hInstance,int nCmdShow);
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lPCmdLine,int nCmdShow){ MSG Msg; if(!InitWindowsClass(hInstance)) { return FALSE; } if(! InitWindow(hInstance,nCmdShow)) { return FALSE; }
while(GetMessage(&Msg,0,0,0)) { TranslateMessage(&Msg); DispatchMessage(&Msg); } return Msg.wParam;}
//define the windowclassnameBOOL InitWindowsClass(HINSTANCE hInstance){ WNDCLASS windowclass; windowclass.cbClsExtra=0; windowclass.cbWndExtra=0; windowclass.hbrBackground=(HBRUSH)(GetStockObject(WHITE_BRUSH)); windowclass.hCursor=LoadCursor(NULL,IDC_ARROW); windowclass.hIcon=LoadIc......
windows第一个程序(2009-09-24 22:05:00)
摘要:#include<windows.h>#include<stdlib.h>#include<string.h>
long WINAPI WndProc(HWND hWnd,UINT iMessage,UINT wParam,LONG IParam); // 获取BOOL InitWindowsClass(HINSTANCE hInstance);BOOL InitWindows(HINSTANCE hInstance,int nCmdShow);
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow){ MSG Message; if(!InitWindowsClass(hInstance)) { return FALSE; } if(!InitWindows(hInstance,nCmdShow)) { return FALSE; } while(GetMessage(&Message,0,0,0)) { TranslateMessage(&Message); DispatchMessage(&Message); } return Message.wParam;}
long WINAPI WndProc(HWND hWnd,UINT iMessage,UINT wParam,LONG IParam){ HDC hDC; HBRUSH hBrush; HPEN hPen; PAINTSTRUCT PtStr; switch(iMessage) { case WM_PAINT: hDC=BeginPaint(hWnd,&PtStr); SetMapMode(hDC,MM_ANISOTROPIC); hPen=(HPE......
