??xml version="1.0" encoding="utf-8" standalone="yes"?>
]]>
ReadConsoleInput是一个Win32 APIQ?nbsp; 声明如下Q?/p>
BOOL ReadConsoleInput(
HANDLE hConsoleInput, //输入句柄
PINPUT_RECORD lpBuffer, //指向INPUT_RECORDl构?数组)的指?/span>
DWORD nLength, //上面那个l构体的大小
LPDWORD lpNumberOfEventsRead //实际d输入内容的个?/span>
);
我把d的功能写在这个助手类中,ReadConsoleInput的得到VK_CODE的方法可以看ReadKeyDown和ReadKeyPush两个函数Q它们的效果略有点不同。右图是效果截图Q按ESC跛_循环。助手类以后q可以添加颜色控制位|控制等功能Q只要你惻I目的是Z化API调用?/p>
#pragma once
#include <Windows.h>
class GohanConsoleHelper
{
HANDLE _hIn;
HANDLE _hOut;
INPUT_RECORD _InRec;
DWORD _NumRead;
public:
WORD VKey;
GohanConsoleHelper(void){
_hIn = GetStdHandle(STD_INPUT_HANDLE);
_hOut = GetStdHandle(STD_OUTPUT_HANDLE);
VKey=0;
}
bool ReadOneInput()
{
return 0!=ReadConsoleInput(_hIn,&_InRec,1,&_NumRead);
}
bool ReadOneInput(INPUT_RECORD& InRec)
{
return 0!=ReadConsoleInput(_hIn,&InRec,1,&_NumRead);
}
DWORD ReadKeyDown()
{
if(!ReadConsoleInput(_hIn,&_InRec,1,&_NumRead))
return 0;
if(_InRec.EventType!=KEY_EVENT)
return 0;
if(_InRec.Event.KeyEvent.bKeyDown > 0)
return 0;
VKey = _InRec.Event.KeyEvent.wVirtualKeyCode;
return VKey;
}
DWORD ReadKeyPush()
{
if(!ReadConsoleInput(_hIn,&_InRec,1,&_NumRead))
return 0;
if(_InRec.EventType!=KEY_EVENT)
return 0;
if(_InRec.Event.KeyEvent.bKeyDown == 0)
return 0;
VKey = _InRec.Event.KeyEvent.wVirtualKeyCode;
return VKey;
}
public:
~GohanConsoleHelper(void){}
};
main所在文件内?/p>
#include <windows.h>
#include <iostream>
#include "GohanConsoleHelper.h"
using namespace std;
int main()
{
GohanConsoleHelper gch;
while (true)
{
if(gch.ReadKeyPush()!=0) //使用ReadKeyDown()捕获按键弹v的VK_CODE
{
if(gch.VKey != VK_ESCAPE)
cout<<"VK_CODE == "<<gch.VKey<<endl;
else {
cout<<"Bye~~"<<endl;
break;
}
}
}
return 0;
}
在命令行得到VK_CODE可以q许多事情了Q可以写个在Win32命o行下的小游戏Q俄|斯方块啊什么的Q呵呵,不过画面E微好点的就搞不了了Q因为毕竟win32命o行分辨率太低了?/p>
忘了攑և参考的资料Q?/p>
http://adrianxw.dk/ 比较全面的Win32命o行教E?/p>
2、关联Edit Box 控gQ这个我弄了半天才明白,首先要在资源~辑中的对话框编辑界面,讑֮Tab控g的顺序(格式->Tab键顺序)?font color="#ff0000">Edit Box的序可|成Up/Down控g序号减一Q设定Up/Down的属性Auto Buddy为TrueQSet Buddy Integer为true?br>3、现在已l能够正常的使用Up/Down功能了?br> 可是如果不想用控件关?/font>Q而是自己讑֮逻辑怎么办呢Q几个小时之前我不会兌的方法,惌努力实现手动l护Edit box的功能。最后终于有了些教训Q得C点心得: 在Up/Down的父H口Q一般是对话框)的消息处理函CQ对WM_VSCROLL消息做一个处理,当lParam与Up/Down的窗口句柄相{时Q对Up/Down的操作结?/font> Q其中wParam中的高位部分是Up/Down的|用这个值来更新Edit Box?br>WM_VSCROLL nScrollCode = (int)LOWORD(wParam); nPos = (short int)HIWORD(wParam); hwndScrollBar = (HWND) lParam; 今天我的教训是用了WM_NOTIFY的消息,处理UDN_DELTAPOS的通知QlParam是一个结构:NMUPDOWNQ通过q个l构来更新Edit boxQ因个通知不等操作l束已l发出,q且q个l构体中有当时的位置以及变化量,更新时候还需要将当时位置加上变化量。这L更新׃出现一定的问题Q有时候pos已经C讑֮好的范围边界Qpos加上变化量就会超界,q要l箋判断Q效率等{问题就出现了,而且十分ȝ。所以最好用关联的Ҏ(gu)Q如果有Ҏ(gu)要求qWM_VSCROLL响应Q?font color="#ff0000">千万不要使用UDN_DELTAPOSQ白花功?/font>Q呵c就写到q里. 今天是除夕了Q祝所有程序员朋友新春快乐Q! |
If you load up the Sample Font's project and then select the \Content\TrueTypeFont.xml file and look at it's properties, you'll see the Content Importer and Content Processor's set. In your project, you'll need to do the following:
Then on the properties of the TrueTypeFont.xml file in your project
I did this by memory so just let me know if that doesn't do the trick and I'll dig through my project.
HTHs!
http://forums.xna.com/thread/4778.aspx
输出(a^n)%k的结果(a的nơ方被k除的余数Q:
输入a,n,kQ?<=a,n<=1e9 1<=k<=10000 Q注意:有多l测试数据,LEOF标志判断l束输入Q:
2 32 5
2 30 5
输出(a^n)%k的结果(a的nơ方被k除的余数Q:
要求复杂度ؓOQlognQ?br>
解决思\,吃屎兄的推导?br>(a*b)Mod c=((a Mod c)*b)Mod c
a^b Mod c 把B写成二进?At ,At-1,At-2...A1,A0)
a^b Mod c =(a^(At*2^t....A0*2^0)mod c)=
((a^A0*2^0 mod c)*a^A1*2^1mod c).....
t=log2B;
下面是小弟的E序